2017-08-15 73 views
1

我试图从bash命令获取输出。 如果我在bash中直接执行some命令,我会看到结果。但不能与PHP exec()函数..PHP exec()不从bash命令抓取输出

$command = "ffmpeg -i '$video_path' 2>&1 | grep Video | perl -wle 'while(<>){ $_ =~ /.*?(\d+x\d+).*/; print $1; }'"; 
$res = exec($command/*, $output*/); 

print_r($res); 
// print_r($output); 

此命令尝试使用ffmpeg lib获得视频分辨率。视频路径很好,我三重检查。

谢谢!

编辑:从输出截图在bash

enter image description here

+1

Per [the docs](http://php.net/manual/en/function.exec.php),“命令结果的最后一行。如果你需要执行一个命令并且拥有所有的来自命令的数据直接返回,没有任何干扰,使用'passthru()'函数。“ – ceejayoz

+2

将命令的完整输出转换为字符串的最简单方法是使用反引号(') – iainn

+0

看起来您已经尝试将输出参数用于exec,它将包含所有输出,而不是最后一行。以这种方式运行时,$输出中有什么? –

回答

2

尝试用一个反斜杠您正则表达式转义$。由于你用双引号包装所有东西,PHP试图插入$ _的值,这不是问题。当我运行你的代码时,我得到了一个未定义的变量通知。它在我逃离$时起作用。

+0

感谢罗布,它也适用于我:) – mauriblint