環境
- Ubuntu server 16.04
- nginx
流れとしてはphpインストール、mecabインストール、php-mecabのインストール、設定
PHPのインストール
恒例、レポジトリの追加
add-apt-repository ppa:ondrej/php apt-get update
php-fpmのインストール。php-7.0-devをインストールしているのは後述するMecabのモジュールのビルドに必要なため。
apt install php7.0-fpm php-7.0-dev
nginxの設定を書き換えてPHPが動くようにする。デフォルトなら/etc/nginx/sites-available/default
location ~ .php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Mecabのインストール
省略
コマンド上でecho おはよう| mecabが正しく動作できていれば大丈夫
php-mecab
適当なディレクトリ上で
git clone https://github.com/rsky/php-mecab.git
ビルド
cd php-mecab/mecab/ phpize ./configure make make install
/etc/php/7.0/mods-available/mecab.iniを作成して以下を記述
extension=mecab.so
phpコマンド単体でMecabが使えるようにさっきのファイルにシンボリックリンクを貼る
ln -s /etc/php/7.0/mods-available/mecab.ini /etc/php/7.0/cli/conf.d/20-mecab.ini
これでコマンド上のPHPからMecabが使えるようになったはず
root@vagrant:~# php -r "print_r(\MeCab\split('すもももももももものうち'));"
Array
(
[0] => すもも
[1] => も
[2] => もも
[3] => も
[4] => もも
[5] => の
[6] => うち
)
今度はphp-fpmでも使えるように同様のシンボリックリンクを貼る
ln -s /etc/php/7.0/mods-available/mecab.ini /etc/php/7.0/fpm/conf.d/20-mecab.ini
再起動
service php7.0-fpm restart
適当なphpファイルで以下を試す
<?php $str = "すもももももももものうち"; $mecab = new \MeCab\Tagger(); $nodes = $mecab->parseToNode($str); var_dump($nodes);