尝试在PHP中运行程序并传递命令行参数,但参数未将其传递给程序

时间:2019-01-13 10:28:02

标签: php shell command-line

我有如下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。

这就是我所知道的:

  • $ exec_string和$ data_to_send不是空的
  • 在命令行中使用一些组合参数执行error_writer.php的行为符合设计要求(正确解析了参数,程序按预期工作)
  • error_writer.php正在运行,但命令行参数为空
  • 在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设置,因此问题必须出在配置中,而不是实际的代码中。

0 个答案:

没有答案