【发布时间】:2017-08-15 15:27:27
【问题描述】:
我正在尝试从 bash 命令获取输出。 如果我直接在 bash 中执行 some 命令,我会看到结果。但不是 PHP exec() 函数..
$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 中输出的屏幕截图
【问题讨论】:
-
Per the docs, "命令结果的最后一行。如果您需要执行命令并将命令中的所有数据直接传回而不受任何干扰,请使用 @987654325 @函数。”
-
将命令的完整输出转换为字符串的最简单方法是使用反引号 (`)
-
您似乎尝试使用 exec 的输出参数,它将包含所有输出,而不是最后一行。以这种方式运行时,$output 中有什么内容?
-
输出只有一行,我在问题中添加了一个屏幕截图,您可以在其中查看。
-
我需要转义这些字符吗? $_ =~ /.*?(\d+x\d+).*/; ?