0

phpスクリプトでproc_open()を使用して、別のphpスクリプトを呼び出して実行しようとしています。コードは次のとおりです。

$descriptors = array(
 0 => array("pipe","r"),
 1 => array("pipe","w"),
 2 => array("file","./error_log.txt","a")
) ;
$cwd="./";
$process=proc_open('php reversegame.php &', $descriptors,$pipes,$cwd); 
if (is_resource($process)) {
  $return_value = proc_close($process);
}

これにより、error_log.txtに次のエラーが書き込まれます

PHP:構文エラー、107行目の/etc/php5/cli/php.iniに予期しない「&」があります

私はproc_openを初めて使用しますが、この関数の使用法を把握しようとしています。私は実際に別のスクリプトを実行しながらこのphpスクリプトを同時に実行しようとしています!

4

4 に答える 4

1

&この行から削除します

$process=proc_open('php reversegame.php ', $descriptors,$pipes,$cwd); 
于 2013-02-12T05:55:18.837 に答える
0

を無効にした可能性がありますproc_open

disable_functionsあなたを検索すると、が表示されますdisable_functions = show_source,system,shell_exec,passthru,exec,phpinfo,proc_open

次に、に変更しdisable_functions = ます。

そして、すべてのサービスを再起動して試してください。

于 2013-02-12T06:03:15.087 に答える
0

私もこのエラーに直面しています。ただし、このエラーによってスクリプトの動作が妨げられることはありません。このエラーは、INIファイルで&演算子を使用しているために発生します(error_reporting E_ALL&〜E_NOTICEの使用など)。

于 2013-02-12T06:05:38.730 に答える
0

pcntl_fork()を使用してプロセスをフォークすることを検討する必要があります

これで他のスクリプトをバックグラウンドに置くことができるかどうかはわかりませんが、現在のスレッドをフォークしてから、新しいフォークされたスレッドを実行したまま現在のスレッドを終了できるはずです。

于 2013-02-12T08:00:01.737 に答える