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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

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

Mecab

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1905閲覧

XserverでのMecabのインポートに関して

yyymix

総合スコア12

PHP

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

Mecab

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/06/02 06:39

編集2019/06/02 06:45

前提・実現したいこと

Xserver上でMacabをimportする際に、コマンドラインからであれば問題なく動くのですが、PHPからpythonファイルを読み出す際にMeCabをimportすると何も表示されず、サーバー側のエラーログを見ると"Request exceeded the limit of 10 internal redirects due to probable configuration error"と出ます。
どのようにすれば、動作させられるかご教示をお願いできましたら幸いです。

エラーメッセージ

該当のソースコード

php

1//ファイル名:test.php 2<?php 3 4$p="abcd"; 5$python="python3 test.py ".$p; 6exec($python,$output); 7 8echo $output[0]; 9?>

python

1#ファイル名:test.python 2 3import sys 4import MeCab 5 6if __name__=='__main__': 7 8 print ('word is' + sys.argv[1]) 9 10#下の方でMacabを使って形態素解析

試したこと

コマンドラインからの読み出しであれば問題なく動作します。
PHP test.php

WEBからアクセスすると、何も表示されず、import MeCabを外すと、MeCabを使っているところ以外は動作するようになります。

サーバー側のエラーログをWEBからアクセスした時に確認すると
"Request exceeded the limit of 10 internal redirects due to probable configuration error"
となっております。
コマンドラインから実行してもエラーログは吐き出されておりません。

不足情報がありましたらご指摘いただけましたら幸いです。

お手数をおかけいたしますが、何卒、よろしくお願い致します。

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

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

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

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

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

hayataka2049

2019/06/02 12:02

mecab-pythonが動く環境はどうやって組みましたか? デフォルトでできたならその旨を追記していただければいいですが、特別なことをして動かしているなら内容を詳しく書いてみてください。 あと、(MeCabのimportを外したコードを実行して)sys.prefixを見るなどして実行時のpythonがコマンドラインからの場合とPHPからの場合で異なるかどうか確認してください。
yyymix

2019/06/02 12:19

ご返信ありがとうございます。 ちょうど今、問題が解決しました。 お手数をおかけいたしました。 解決手段 PHPからpythonを呼び出すときのパス指定が想定外のところにつながっておりました。 コマンドラインから呼び出す時は.bash_profileに入っているパスでpythonを呼び出しておりましたが、PHPから呼び出す際は、コマンドラインでwhich python3で出てきたパスをPHPの中で指定することで解決しました。 exec('pythonフルパス ファイル名 引数')
hayataka2049

2019/06/02 12:22

了承しました。お手数ですが、↑のコメントと同様の内容を自分で回答としてつけ、自己解決扱いで質問をクローズしておいていただけると他の方が混乱しないと思います。
yyymix

2019/06/02 12:26

かしこまりました! ありがとうございます!
guest

回答1

0

自己解決

解決手段
PHPからpythonを呼び出すときのパス指定が想定外のところにつながっておりました。
コマンドラインから呼び出す時は.bash_profileに入っているパスでpythonを呼び出しておりましたが、PHPから呼び出す際は、コマンドラインでwhich python3で出てきたパスをPHPの中で指定することで解決しました。

exec('pythonフルパス ファイル名 引数')

投稿2019/06/02 12:24

yyymix

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問