php - 如何捕获用 PHP exec 发出的命令的多行输出?

标签 php exec command-line-interface

我正在尝试在 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 执行时...

exec("time",  $exec_results);

... $exec_results 的值为空:

Array( )

我实际上不需要在我的应用程序中运行日期或时间,但这些只是命令行上的单行与多行输出似乎如何改变返回 PHP 的内容的示例。

文档说:

If the output argument is present, then the specified array will be filled with every line of output from the command.

那么,为什么 $exec_results 数组没有填充在命令行中运行时间命令时看到的所有行?

注意 - 我已经以 apache 用户身份运行命令行条目以排除特权。

最佳答案

这应该适合你

ob_start();
passthru("ls -la");
$dat = ob_get_clean();

关于php - 如何捕获用 PHP exec 发出的命令的多行输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16557333/

相关文章:

Python 执行和 __name__

java - 从另一个程序触发java程序会使用相同的JVM还是会使用不同的JVM?

node.js - 如何将多个键映射到 yargs .alias 中的别名

php - 显示数组参数php的mysql查询结果

PHP url 到数组

java - 错误 :Runtime() has private aaccess in java. lang.runtime

amazon-web-services - 使用 AWS CP 命令排除特定文件夹

linux - 适用于 Linux 的交互式 GUI 命令行合并工具(如 BeyondCompare 或 WinMerge)

javascript - 只是将 XML/JSON 存储在数据库中以用于数据库中未使用的数据?

php - 将 rss 数据存储到 mysql 表时的字符集问题