如何使用php exec()在Linux中执行命令并将输出绑定到数组?

我使用PHP exec()在Linux中执行egrep。 输出是在Linux中从命令行实际执行该语句时的文件列表。 当我在PHP中回显结果时,它只显示输出的最后一行。

我想把这个列表绑定到一个数组,所以我可以在PHP中进一步操纵它。 我已经尝试使用array()将输出绑定到数组,然后使用print_r显示它,但它只显示数组中的一个项目,即最后一行。

阅读手册 ,看看签名:

string exec ( string $command [, array &$output [, int &$return_var ]] ) 

从而:

 $lastLine = exec('ls', $output, $status); var_dump($output); 

是你以后的!

exec确实返回最后一行输出,但它接受3个参数。 第二个是对数组的引用(出于某种原因,不需要事先声明,这里不发布通知)。 第三个是退出状态(有点像在命令/程序在命令行上运行完成后执行echo $?时得到的结果)。
引用手册:

如果输出参数存在,那么指定的数组将被填充命令的每一行输出。 尾随的空格(如\ n)不包含在此数组中。 请注意,如果数组已经包含某些元素,则exec()将追加到数组的末尾。 如果您不希望函数追加元素,请在将数组传递给exec()之前先调用unset()方法。

这意味着, exec最佳用途(如获取最多信息)是这样的:

 $last = exec('ls -lta', $fullList, $status); if ($status !== 0) { exit('command didn\'t finish as expected: '.$status); } print_r($fullList); 

如果这仍然没有意义,那么请参阅本网站上的任何重复问题