我使用 命令 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 關注
- 2195 瀏覽
添加回答
舉報
0/150
提交
取消