さくら共有サーバー、php_mecabのインストール方法

さくら共有サーバー、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の項目が表示されている。

タイトルとURLをコピーしました