我使用 命令 ffmpeg -i /home/video/a.mp4 -r 1 -s 950x520 -f image2 /home/video/a.jpg在终端运行可以执行,但是在PHP文件里,我通过浏览器运行exec('ffmpeg -i /home/video/a.mp4 -r 1 -s 950x520 -f image2 /home/video/a.jpg')却没有执行成功,网上百度说是权限问题,于是测试,echo shell_exec('ls') 可以执行echo shell_exec('whoami') 显示 nginx于是vim /etc/sudoers 添加了Allow root to run any commands anywhereroot ALL=(ALL) ALLnginx ALL=(ALL) ALL保存后, reboot重启 但是也没有用啊。网上很多人出现这个问题,我就没看到有用的解决方案。还望知道的给个答案吧!!!
2 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
1、
应该还是权限问题。
在浏览器使用 php 执行 exec 的这个用户,能不能执行 ffmpeg 这个命令,这很关键。
看你提到了 nginx ,我猜测可能是 nginx + php-fpm ,那么就要看 php-fpm 的执行用户有么有权限了,而不是 nginx 。
2、
可以查看运行的错误信息嘛。
比如改成
exec("ffmpeg -i /home/video/a.mp4 -r 1 -s 950x520 -f image2 /home/video/a.jpg 2>&1 ",$error);
3、
再往下说,一个可能是原因是 sh: ffmpeg: command not found
,那么就不是权限的问题了,是 nginx 用户找不到这个命令,也就是nginx用户的 $PATH 这个环境变量里找不到这个命令,这时可以把命令路径写全即可
比如 /usr/bin/ffmpeg ****
,当然这命令具体全路径是什么你要自己找找。
多找找原因即可,希望对你有帮助,之前是审题不清 @孤狼独闯天宇
- 2 回答
- 0 关注
- 2138 浏览
添加回答
举报
0/150
提交
取消