亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Linux上,php文件里的exec()執行失敗,是什么原因呢?

在Linux上,php文件里的exec()執行失敗,是什么原因呢?

桃花長相依 2018-11-13 22:43:55
我使用 命令 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貢獻1條經驗 獲得超0個贊

查看完整回答
反對 回復 2019-01-07
?
陪伴而非守候

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 **** ,當然這命令具體全路徑是什么你要自己找找。

多找找原因即可,希望對你有幫助,之前是審題不清 @孤狼獨闖天宇


查看完整回答
反對 回復 2018-11-13
  • 2 回答
  • 0 關注
  • 2195 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號