0

現在、Web サーバーが提供する php ページがあります。ページに表示する必要があるすべての情報を表示するには、外部の Python スクリプトからの出力が必要です。そのため、php の exec() コマンドを使用して python スクリプトを実行し、次のように出力を文字列の配列にキャプチャしています。

$somequery = $_GET['query'];
$result = exec("python /var/www/html/query/myscript.py ".somequery."");

//some for loop to loop through entries in result and echo them.

ただし、出力されるエントリはありませんが、サーバーのコンソールでコマンドを直接実行すると、正しく出力されます。実行しているWebページでコマンドをエコーアウトしようとしましたが、それは正しいコマンドです。可能性があると私が思う唯一のことは、 exec() が終了する前に残りのphpプログラムの実行を停止せず、 $result が空であることを発見してエントリを出力したループにつながることです。

php スクリプトの残りの部分よりも前に exec() の実行が終了するようにするにはどうすればよいですか? 変更が必要な php.ini の設定はありますか? よくわかりません。

編集: shell_exec("echo hello"); の出力を実行して保存しようとしました。その出力を印刷すると、印刷されます。ただし、数秒長くかかるコマンドを実行すると、プログラムは次の行に進む前に実行を終了しません。

編集 2: 次の投稿で解決策を見つけましたhttps://stackoverflow.com/a/6769624私の問題は、使用していた numpy python パッケージにあり、/usr/lib64/python2 の行をコメントアウトするだけで済みました。 .7/ctypes/ init .py ポスターのように、私のスクリプトは正しく出力されました。

4

1 に答える 1

2

シェル出力を取得する正しい方法は次のとおりです。

exec("python /var/www/html/query/myscript.py ".somequery."", $result);

var_dump($result); //output should be in here

試してみる。

于 2012-12-16T01:31:02.837 に答える