1

exec私はしばらくの間、 PHP を介して Python スクリプト を正常に作成する方法を探していました。

PHP でプログラミングしてからしばらくの間、実際に Python を使用したことはありませんでしたが、PHP から Python にデータを送信し、次にデータを PHP に送り返すための簡単なコードを探していました.py

execjson enc/dec の有無にかかわらず、PHP で試してみましたが、成功しませんでした。

これらは、私が PHP で試したコマンドです。

* $result = shell_exec('pythontest.py' . escapeshellarg(json_encode($data)));
* exec("python pythontest.py", $resultData);
  var_dump($resultData);

成功しませんでした。

In pythontest.py: データを返送するためのプリント。

pythontest.pyPython と(PHP)の両方のフルパスで試してみました。

json を使用した enc/dec は PHP ファイルで機能するため、PHP コードに問題はないように見えますが、それでもスクリプトを実行できません!

私が言ったように、私は以前に Python を使用したことがないので、それを機能させるためにスクリプトにコードを記述するだけでなく、それ以上のことが必要なのだろうか?

私はこれについて多くの投稿を見て、「彼らのために働く」コードを試しましたが、私にとってはそうではありません^^

追加情報: WAMP 経由の PHP、同じマップ内の .py。それが違いを生むなら、それはウェブベースであるはずです。

4

2 に答える 2

0

python.exe同じディレクトリになかったので、パスを変更しようとしました。これに関する私の最終結果は

$output = getenv('PATH'); echo "Real Path: " . $output . "<br>"; $ret = apache_getenv("PATH"); echo "Apache Path: " . $ret . "<br>"; apache_setenv("PATH", "C:/Python33"); $ret = apache_getenv("PATH"); echo "Apache new path: " . $ret . "<br>"; $output = getenv('PATH'); echo "Real path, hopefully changed: " . $output . "<br>";

これは、これまでパスを変更したことがないため、パスを変更できるかどうかを確認するためのものでした。私は今しか持っていません

import sys, json print ("hello")

私のpythonファイルで、cmdを介して実行しようとしましたが、うまくいきました。しかし、phpで実行しようとすると、もう一度失敗します。私は権限も調べました。管理者、ユーザーには読み取りと実行の権限があり、フォルダーとサブフォルダー/ファイルに完全な権限を持つ「全員」を追加して、違いがあるかどうかを確認しました。私が見逃したもの、または許可、Pythonコード、またはパスに何か問題がありましたか?

于 2013-07-09T12:09:03.363 に答える
0

python.exeを含むディレクトリがPHP スクリプトの PATH にあることを確認してください ( 経由getenv('PATH'))。

python c:\path\to\pythontest.pyWindows コマンド プロンプトから直接実行してみてください。それは動作しますか?そうでない場合は、そこから PATH と問題をデバッグしてから、PHP で再試行してください。

python.exeWAMP スタックが限られた権限で PHP を実行している場合は、ユーザーがファイルとそれを含むディレクトリ全体に対して「読み取りと実行」タイプの権限を再帰的に持っていることを確認してください。これはやり過ぎかもしれませんが、Python 配布ディレクトリ全体でそのユーザーのパーマを再帰的に設定すると、パーミッション関連の問題が除外されます。

.exeたとえば、python実行可能ファイルの名前を で修飾してみてくださいc:\python27\python.exe pythontest.py(「フルパス」で試したと言うので、とにかく試したかもしれませんが、が含まれていることを確認するためにそこに投げています.exe)。

pythontest.pyの内容をごく単純なもの ( など)に置き換えてみて、print 'hello'動作が変わるかどうかを確認してください。

また、 の内容 (または少なくとも最初の行) を投稿してくださいpythontest.py

于 2013-07-08T19:50:20.057 に答える