さくらVPSにphp-mecabを入れたときの覚書

さくらVPSにphp-mecabを入れたときの覚書手順
1.mecab を入れる
2.php-mecab を入れる

参考にしたサイト
phpでmecab

手順は参考サイトどおり。自分なりの捕捉を入れた。

ソースコードをインストールする場所に移動
————————————————-
cd /usr/local/src/
————————————————-

ダウンロードと解凍
————————————————-
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar xvf mecab-0.996.tar.gz
————————————————-

解凍したディレクトリに移動
————————————————-
cd mecab-0.996
————————————————-

configure で Makefile をつくる
————————————————-
sudo ./configure –enable-utf8-only
————————————————-
※「configure」というシェルスクリプトを実行することで、ソースファイルをコンパイルする前に、インストール対象となるシステム特有の機能/情報をチェックし、チェック状況を記述したMakefileが作成される。

コンパイルとインストール
————————————————-
sudo make
sudo make install
————————————————-

この時点で mecab を実行すると 辞書がないエラーが出る
————————————————-
# mecab
param.cpp(69) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/dicrc
————————————————-

バージョン確認だけならエラーは出ない
————————————————-
# mecab -v
mecab of 0.996
————————————————-

ipa辞書のインストール

ipa辞書のダウンロード先をつくる
————————————————-
cd /usr/local/src/mecab-0.996/
mkdir library
————————————————-

ダウンロードして ipa辞書を解凍
————————————————–
tar xvf mecab-ipadic-2.7.0-20070801.tar.gz
————————————————–

configure で Makefile をつくる
————————————————–
./configure –with-charset=utf8
————————————————–

コンパイルとインストール
————————————————-
sudo make
sudo make install
————————————————-

動作確認する
————————————————-
mecab
すもももももももものうち
————————————————-

任意。
辞書「mecab-ipadic-neologd」のインストール
(ipa 辞書を先にインストールしておかないと効果は薄い?要確認)
————————————————-
cd /usr/local/src/mecab-0.996/
mkdir library
cd /usr/local/src/mecab-0.996/library
git clone –depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd /usr/local/src/mecab-0.996/library/mecab-ipadic-neologd/
./bin/install-mecab-ipadic-neologd -n
————————————————-

動作確認が終了したら続いて、php-mecab のインストール

————————————————-
cd /usr/local/src/
wget https://github.com/rsky/php-mecab/archive/master.zip
unzip master.zip
cd php-mecab-master/mecab
phpize
(sudo ./configure
↑だとエラーが出た、configure: error: mecab-config not found)
sudo ./configure –with-php-config=/usr/bin/php-config –with-mecab=/usr/local/bin/mecab-config
sudo make
sudo make install
————————————————-

./configure の途中で re2c が無いみたいなエラーが出たのでインストールする

re2c をインストール
————————————————-
wget http://jaist.dl.sourceforge.net/project/re2c/re2c/0.13.7.5/re2c-0.13.7.5.tar.gz
tar zxvf re2c-0.13.6.tar.gz
cd re2c-0.13.6
./configure
make
make install
————————————————-

再び./configure からやり直し
————————————————-
sudo ./configure
sudo ./configure –with-php-config=/usr/bin/php-config –with-mecab=/usr/local/bin/mecab-config
sudo make
sudo make install
————————————————-

シンボリックリンクの作成
————————————————-
sudo ln -s /usr/lib64/php/modules/mecab.so /etc/php.d
————————————————-

php.iniの編集
————————————————-
vim /etc/php.ini
————————————————-

/etc/php.ini
————————————————-
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; … or under UNIX:
;
; extension=msql.so
;
; … or with a path:
;
; extension=/path/to/extension/msql.so
;
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.

;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;

;php-mecab を動かす記述
extension=mecab.so

;mecab-php の辞書のパス
mecab.default_dicdir=”/usr/local/lib/mecab/dic/mecab-ipadic-neologd”
————————————————-

apacheの再起動
————————————————-
service httpd restart
————————————————-

動作確認
————————————————-
php -r ‘phpinfo();’ | grep ‘mecab’ -i 
————————————————-

以下のようになっていれば問題ない。
————————————————-
mecab
MeCab Support => enabled
MeCab Library => 0.996 => 0.996
mecab.default_dicdir => no value => no value
mecab.default_rcfile => no value => no value
mecab.default_userdic => no value => no value
————————————————-

test.php
辞書の読み込みをしてないとエラーになる
————————————————-
<?php

$str = ‘この焼肉は焼きにくい’;
$mecab = new Mecab();

$nodes = $mecab->parseToNode($str);

foreach ($nodes as $n)
{
echo $n->getSurface() . “
“;
echo $n->getFeature() . “
“;
}
?>
————————————————-

使用する辞書を PHP で指定する場合
————————————————-
$options = array(‘-d’, ‘/usr/local/lib/mecab/dic/mecab-ipadic-neologd’);

$mecab = new MeCab_Tagger($options);
————————————————-

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