質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MacOS(OSX)

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

PHP

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

Mecab

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

Q&A

1回答

790閲覧

MacOS上でのPHPからMecabの利用時のエラーについて

Aipa

総合スコア43

MacOS(OSX)

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

PHP

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

Mecab

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

0グッド

1クリップ

投稿2015/04/12 13:26

質問です。

MacOS上で、Mecabをインストールして、Mecabをphpで実行したいため、下記モジュールをインストールしました。

  • mecab-0.996
  • mecab-ipadic-2.7.0-20070801
  • php_mecab

バージョンについては下記になります。

lang

1$ sw_vers 2ProductName: Mac OS X 3ProductVersion: 10.10.3 4BuildVersion: 14D131 5 6$ php -v 7PHP 5.5.20 (cli) (built: Feb 25 2015 23:30:53) 8Copyright (c) 1997-2014 The PHP Group 9Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies 10 with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

mecabをコンソール上で実行しても下記の様に問題はありません。

lang

1$ mecab 2すもももももももものうち 3すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ 4も 助詞,係助詞,*,*,*,*,も,モ,モ 5もも 名詞,一般,*,*,*,*,もも,モモ,モモ 6も 助詞,係助詞,*,*,*,*,も,モ,モ 7もも 名詞,一般,*,*,*,*,もも,モモ,モモ 8の 助詞,連体化,*,*,*,*,の,ノ,ノ 9うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ 10EOS

が、php上から実行すると下記エラーが出力されます。

lang

1$ php -r 'new Mecab();' 2libc++abi.dylib: terminating with uncaught exception of type marisa::Exception 3Abort trap: 6

ちなみに、phpinfo()なども確認済みですが、mecabは認識されているようです。
ipa-dicを読みにくまでは問題なさそうですが、その後に問題があるんじゃないかなと思っています。

自分でも引き続き探していますが、もしわかる方がいましたら、ご教授いただけますと幸いです。
お手数をおかけいたしますが、どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

むむー。やっぱりわかりま10 でした。

使わない方向に進みました。
※もしわかる方がいらしたら是非教えてほしいです+(0゚・∀・) +

ありがとうございました。m(_ _ )m

lang

1<?php 2 3// mecabのパス 4$path = '/usr/local/bin/mecab'; 5 6// 標準入力を利用し、キーボードからの入力を受け付ける 7$stdin = fopen('php://stdin', 'r'); 8$str = fgets($stdin); 9fclose($stdin); 10 11// 関数が存在するか確認 12if (!function_exists('stream_get_contents')) { 13 function stream_get_contents($handle) { 14 $contents = ''; 15 while (!feof($handle)) { 16 $contents .= fread($handle, 8192); 17 } 18 return $contents; 19 } 20} 21 22$descriptorspec = array( 23 0 => array("pipe", "r"), 24 1 => array("pipe", "w") 25); 26 27$result = ""; 28$process = proc_open($path, $descriptorspec, $pipes); 29if (is_resource($process)) { 30 fwrite($pipes[0], $str); 31 fclose($pipes[0]); 32 $result = stream_get_contents($pipes[1]); 33 fclose($pipes[1]); 34 proc_close($process); 35} 36echo $result; 37

投稿2015/04/24 09:13

Aipa

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問