如何从exec获取输出?

时间:2015-07-22 11:41:58

标签: php

我尝试了exec的不同变体:

exec('which ffmpeg', $output, $e);
exec("which ffmpeg", $output);
exec('which ffmpeg 2>&1', $output, $e);
exec('echo "which ffmpeg" 2>&1', $output, $e);
$output = exec('which ffmpeg');

但没有运气。

在控制台中:

[root@gs01]# which ffmpeg
/usr/local/bin/ffmpeg

3 个答案:

答案 0 :(得分:1)

将数组作为第二个参数传递给exec()方法:

$output = array();
exec('which ffmpeg', $output);
var_dump($output);
  

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

有关详细信息,请查看manual

php > $a = array(); exec('which ffmpeg', $a); var_dump($a);

返回:

array(1) {
  [0] =>
  string(15) "/usr/bin/ffmpeg"
}

答案 1 :(得分:0)

system()可能会做你想要的。

ob_start();
system('ls 2>&1');
$ob_contents = ob_get_contents();
ob_end_clean();


echo $ob_contents;

答案 2 :(得分:0)

echo shell_exec('which ffmpeg');

shell_exec以字符串形式返回输出。