0

Amazon ec2 obunto マイクロ インスタンスを使用しています。Pythonコードを実行し、単純な文字列である結果をエコーするphpコードを作成しました。obun​​tu 端末で実行すると結果は完全に表示されますが、ブラウザからアクセスすると何も表示されません。そして、私には理由がわかりません。実際には、python スクリプトを実行できません。

$tmp = exec('/usr/bin/python /var/www/similarity.py 従業員/失業者/ウェイター');

誰でも私を助けることができれば、本当に感謝しています。PS: 私は mac book pro を使用しています。コンピューターのローカルホストで同じコードを使用すると、すべてが完全に機能します。

4

2 に答える 2

1

何度も「頭をひっかいた」後、ようやく理解できました。

まず、php を実行している現在のユーザーを把握する必要があります。php.info ファイルをチェックアウトするか、

$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];

これにより、コードを実行しているユーザーが得られます。私の場合、それはapacheむしろそうでしたwww-data(そもそもそう想定すべきではありませんでした)。

その後、sudoersファイルを編集する必要があります(etc/sudoers)

そこに行を追加します。

具体的にしたい場合は、@ Janithのコードを使用できます。

apache ALL=NOPASSWD:/var/www/similarity.py
apache ALL=NOPASSWD:/usr/bin/python

または、単に追加することができます

apache ALL=(ALL)        NOPASSWD:ALL

(おそらくパスを指定する必要があります)。

次に、php を介してスクリプトを実行します。

于 2016-05-01T21:13:29.753 に答える
0

これは、python ファイルにアクセスするためのパーミッションの問題です。サーバーのpythonスクリプトを介して実行すると、apacheユーザー(おそらくwww-data)としてアクセスします。したがって、apache ユーザーには python ファイルを実行する権限がありません。

できることは、このコマンドを sudo として実行し、以下のサンプルのように /etc/sudoers ファイルに必要なすべてのアクセス権を apache ユーザー (www-data) に追加することです。

 www-data ALL=NOPASSWD:/var/www/similarity.py
 www-data ALL=NOPASSWD:/usr/bin/python

これは単なるサンプルです。環境に応じてこの行を変更する必要があります。

于 2013-07-21T08:09:45.760 に答える