質問編集履歴

1 pythonでMeCabが動くことを追記

nnahito

nnahito score 1879

2017/02/09 23:42  投稿

【PHP/MeCab】バージョンが違う場合はどうすればいい?
【PHP/MeCab】Apacheでphp-MeCabを使いたい。MeCabのバージョンが違う場合はどうすればいい?
# はじめに
申し訳ありませんが、完全なる初心者です。
用語等、簡単にして頂けると助かります。
# 質問
MeCabをPHPで使いたいので、
- [MeCab](http://taku910.github.io/mecab/#download)
- [ipadic](http://taku910.github.io/mecab/#download)
- [php-mecab](https://github.com/rsky/php-mecab)
を`sudo make install`しました。
そして以下のPHPコードをMacの`/Users/ユーザ名/Sites/`で、実行したのですが、「接続がリセットされました」(FireFox表示)が表示されます。
```php
<?php
//phpinfo();
$str    = 'なんで、MeCabコマンドは動くし、Python+MeCabは動くのに、PHP-MeCabは動かんのじゃ!!!';
$options = array('-d', '/usr/local/lib/mecab/dic/ipadic');
$mecab = new MeCab_Tagger($options);
$nodes = $mecab->parseToNode($str);
foreach ($nodes as $n)
{
   echo $n->getSurface() . "<br />";
   echo $n->getFeature() . "<br />";
}
?>
```
---
ずっと原因を探っているのですが、これかなというものを発見。
以下の図は、`php_info();`の表示の一部です。
![イメージ説明](524266f82c37729738e5f3d0ef8acdca.png)
MeCab LibraryのCompiledとLinkedのバージョンが違います。
これが何を指しているのか、私の今の知識では分かりませんが、これのせいでしょうか?
もし、これが原因であれば、どのようにして修正するのでしょうか?
ご存じの方がいらっしゃいましたら、ご教示頂けますと幸いです。
また、他に必要な情報があれば、おっしゃって頂けますと幸いです。
---  
 
なお、ターミナル上でMeCabは正しい動作をしますし、Python(2系)とMeCabのバインドはできており、Pythonから形態素解析を行うことはできます。  
ただし、localhost(Apache)でPython+MeCabを動かそうとすると、同様のエラーが表示されます。  
 
 
# 環境
- MacOS X Yosemite (10.10.5)
- PHP 5.5.36 (cli) (built: Jun 12 2016 23:47:46)
- mecab of 0.996
# 参考サイト様
- [phpでmecab](http://qiita.com/yudaifuijta0121/items/1787d70b9cfca3e43d12)
- [【CentOS6】YUM(Remi)経由でPHP5.4からPHP5.6に移行 ](http://blog.dksg.jp/2015/08/centos6yumremiphp54php56.html)
- [形態素解析「MeCab」と「php_mecab」を使った(複合)名詞の抽出](https://colo-ri.jp/develop/2011/04/mecab_php_mecab.html)
- [MeCab と php-mecab のインストールメモ(CentOS7.1)](https://blog.apar.jp/php/2642/)
- [PHPの拡張モジュールGDが動くまでの試行錯誤](http://qiita.com/nusa/items/8a71dcc630e7d7118f5b)
# 過去の似た自分の質問
- [【php-mecab】PHPでMeCabを使いたいが、パスの指定がわからない](https://teratail.com/questions/62872)
  • PHP

    38029 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Mecab

    404 questions

    Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

  • MacOS(OSX)

    4365 questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る