我正在尝试在 PHP 中执行系统命令并捕获那些输出覆盖多行的命令的输出。我正在使用 exec(),但它似乎只为在单行上生成输出的命令返回一个值。
例如,如果我在命令行运行 date 我得到:
Wed May 15 15:07:32 EST 2013
正如预期的那样,如果我使用这个从 PHP 作为 exec 运行这个命令......
exec("date", $exec_results);
...然后 $exec_results 的值变为...
Array ( [0] => Wed May 15 15:07:32 EST 2013 )
但是,当我从命令行运行时间时,我得到了这个......
real 0m0.000s
user 0m0.000s
sys 0m0.000s
...但是当我使用 PHP 从 PHP 中执行此操作时...
exec("time", $exec_results);
... $exec_results 的值为空:
Array( )
我实际上不需要在我的应用程序中运行日期或时间,但这些只是命令行上的单行与多行输出似乎如何改变返回 PHP 的示例。
文件说:
如果存在输出参数,则指定的数组将填充命令的每一行输出。
那么为什么 $exec_results 数组没有被命令行中运行 time 命令时看到的所有行填充呢?
注释 - 我以 apache 用户身份运行命令行条目以排除特权。