環境
- 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);