【发布时间】:2012-03-19 12:25:55
【问题描述】:
我正在尝试通过 PHP exec 调用运行 ffmpeg,我已经调试了一段时间并查看了这里的很多响应,但仍然没有找到任何答案...
我的简化电话是:
$cmd = 'ffmpeg 2>&1';
exec(escapeshellcmd($cmd), $stdout, $stderr);
var_dump($stderr);
var_dump($stdout);
var_dump($cmd);
exit;
我的输出是 $stderr = int(1) 和 $stdout = array(0) { }
我也试过shell_exec($cmd),它返回NULL。
cmd.exe 具有为 IUSR 帐户设置的权限 - 例如我可以运行$cmd = 'dir' 并查看目录列表输出。
PHP 没有在安全模式下运行。
ffmpeg.exe 与我的 php 文件位于同一目录中,但我有相同的响应,在 $cmd 中给出了 ffmpeg.exe 文件的绝对路径。
ffmpeg 从命令行运行良好。
我正在运行 Windows XP、IIS 和 PHP 5.3。
编辑:
如果我运行 'ffmpeg -h' 我会得到帮助命令,这必须表明 ffmpeg 已被识别
我已将 PHP 内存限制增加到 1024 - 不走运。
【问题讨论】:
-
exec() 的第二个参数是
return value,而不是stderr。返回值 1 意味着它出错了。我不知道为什么您在 $stdout 中看不到错误输出。