現在、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 ポスターのように、私のスクリプトは正しく出力されました。