我尝试在 PHP 中运行以下命令(在 Ubuntu 上):
<?php
if (exec("/home/johnboy/ffmpeg/ffmpeg -i test1.mp4 -acodec aac -ab 128kb -vcodec mpeg4 -b 1220kb -mbd 1 -s 320x180 final_video.mov"))
{ echo "Success"; }
else { echo "No good"; }
Run Code Online (Sandbox Code Playgroud)
我总是得到“不好”的回应,并且没有创建文件。
有趣的是,如果我在 Shell 中运行相同的命令,它就能工作,没有问题。
另外,当我运行上面相同的代码,但用“whoami”代替 ffmpeg 的东西时,它就可以工作。(它回响“成功”)
关于为什么这行不通的任何想法?谢谢。
小智 5
获取 stderr 将给出结果
尝试
ffmpeg -i inputfile [more_params] 2>&1
Run Code Online (Sandbox Code Playgroud)
apache/web 用户可以访问吗/home/johnboy/ffmpeg/ffmpeg?也就是说,也许/home/johnboy是 0700 而不是 0755?
也许存在影响加载如此大的程序及其所有库的资源限制?
如果您将脚本运行到 php cli sapi,它的行为是否正确?即使以 apache 用户身份运行?
strace -ff当apache web用户通过php cli运行php脚本时显示什么?