さくら共有サーバー、php_mecabのインストール方法
前提として、mecab の辞書にアクセスする必要があるので辞書をローカルフォルダ以下にインストールしておく必要があ(さくらに最初から入っている辞書を使うこともできるが、htmlファイルが UTF-8 の場合、デフォルトの辞書が EUC なので文字化けしてしまう)。
さくら共有サーバー、UTF-8の辞書でmecabを使う方法 ←この作業を済ませておく
1.ファイルを解凍してビルド
///////////////////////////////////////////////////
tar xvfz php-mecab-0.5.0.tgz ←解凍
cd php-mecab-0.5.0 ←ディレクトリ移動
phpize ←拡張モジュールをビルド(ソースファイルから実行可能なファイルを作成。configureファイルができる)
※-ize(アイズ)・・・~化する。~で扱う。
※エックスサーバーでは phpize は使えないので php_mecab はインストールできない。yum や rpm コマンドが使えないので phpize の追加もできない。どうしても phpize が使えない環境で PHP + mecab を実行したいなら PHP の EXEC 関数でコマンドラインを操作してすることならできそう?
///////////////////////////////////////////////////
2.「configure」を実行
///////////////////////////////////////////////////
./configure ––with-mecab=/usr/local/bin/mecab-config ––with-php-config=/usr/local/php/5.3.27/bin/php-config
///////////////////////////////////////////////////
php-configのバージョンは必ずあわせる。現在使用しているphpのバージョンをphpinfoで確認。今回は「5.3.27」。指定しなくてデフォルトのバージョンが呼び出されるとうまくいかない。phpのバージョンはターミナルから「php -v」でも調べられるが出てきたバージョンのフォルダ名がない場合がある(php -v で「5.45」と出たが存在するフォルダは「5.4」だった)。使用しているphp のバージョンはサーバーコントロールにログインして調べるといい。
mecab-configの場所は「which mecab-config」で特定できる。自前の mecab をインストールしている場合はそちらのパスを指定する。
3.コンパイルとインストール
///////////////////////////////////////////////////
make ←コンパイル
make install ← インストール
///////////////////////////////////////////////////
インストールするとエラーメッセージが出た
———————————————————————-
Installing shared extensions: /usr/local/php/5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
cp: /usr/local/php/5.3.27/lib/php/extensions/no-debug-non-zts-20090626/#INST@99219#: Permission denied
———————————————————————-
権限のないところにインストールを試みているよう。
ローカルフォルダにインストールするように、Makefileをいじる。(make実行後に作成されるファイル)
Makefileの変更箇所
———————————————————————-
#EXTENSION_DIR = /usr/local/php-5.x.x/lib/php/extensions/no-debug-non-zts-20060613 ←コメントアウト
EXTENSION_DIR = $(HOME)/local/lib/php/extensions/no-debug-non-zts-20060613 ←追記
※「20060613」とかフォルダ名は合わせるといい。
———————————————————————-
再びmake installすると無事にインストールが完了するはず。
4.続いて、PHPの起動時に読み込まれる拡張モジュールを設置するディレクトリの設定
PHP.iniに拡張モジュールの置き場を記述する
PHP.iniに記述(追記)する内容
———————————————————————-
extension_dir=”/home/username/local/php-mecab-0.5.0/modules”
extension=mecab.so
———————————————————————-
※拡張子 so は shared object の略。UNIX系OSの共有ライブラリのファイル形式。
最初、こう書いたら動かなかくてハマった。
———————————————————————-
extension_dir=”/home/username/local/lib/php/extensions”
extension=mecab.so
———————————————————————-
作業時に出力されたメッセージを見てとりあえず動くところまで持ってこれた。
———————————————————————-
Libraries have been installed in:
/home/sunsdoor/local/php-mecab-0.5.0/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR’
flag during linking and do at least one of the following:
– add LIBDIR to the `LD_LIBRARY_PATH’ environment variable
during execution
– add LIBDIR to the `LD_RUN_PATH’ environment variable
during linking
– use the `-Wl,–rpath -Wl,LIBDIR’ linker flag
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
———————————————————————-
UTF-8の辞書を使いたいのでphp.iniに追記
———————————————————————-
mecab.default_dicdir=/path/ ←辞書
mecab.default_userdic=/path/ ←ユーザ辞書
———————————————————————-
※UTF-8 の辞書を使う場合は phpファイルの保存形式やメタタグ(headタグ内)の文字コードも UTF-8 に揃える必要がある。
自分の環境だといずれか(dicrcとかsys.dicがあるフォルダ)
———————————————————————-
mecab.default_dicdir=”/home/username/local/mecab-dic/ipadic-utf8″
mecab.default_dicdir=”/home/username/local/lib/mecab/dic/ipadic”
———————————————————————-
うまくいっていたらphpinfoにmecabの項目が表示されている。