我正在使用 PHPs 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);
如果这对您仍然没有意义,请参阅本网站上的任何重复问题