我有如下PHP代码片段:
function report ($data_to_send)
{
//$exec_string = 'nohup php ../serverside/error_writer.php ' . $data_to_send . ' >/dev/null 2>&1 &';
echo "Execution string: $exec_string </p>";
exec ("../serverside/error_writer.php $data_to_send > /dev/null 2>&1 &");
}
调用此函数时,PHP程序应运行error_writer.php并立即继续执行。它不应停止并等待输出。
程序是,$ exec_string中的参数永远不会到达error_writer.php。
这就是我所知道的:
有人对为什么命令行参数完全不使用error_writer.php有所了解吗?我希望我写的足够清楚。谢谢。
编辑1/20:所以最终对我有用。
$exec_string = 'php -d register_argc_argv=1 ../serverside/error_writer.php "' . $data_to_send . '" > /dev/null 2>&1 &';
-d会覆盖php.ini设置,因此问题必须出在配置中,而不是实际的代码中。