我正在使用PHP exec()在Linux中执行egrep。在Linux中从命令行实际执行此语句时,输出是文件列表。当我在PHP中回显结果时,它只显示输出的最后一行。
我想将此列表绑定到一个数组,以便我可以在PHP中进一步操作它。我尝试使用array()将输出绑定到一个数组,然后用print_r显示它,但它只显示数组中的一个项目,即最后一行。
答案 0 :(得分:2)
Read the manual,看一下签名:
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);
如果这仍然没有意义,那么refer to any of the duplicate questions on this site