問題場景: 用ffmpeg對檔案進行轉碼。
問題描述: 使用php透過exec()、passthru()、system()這三個方法呼叫終端ffmpeg的指令實作轉碼
程式碼如下:
<code>$cmd = '/usr/local/bin/ffmpeg -i test.mpg -c:v libx264 -b:v 1024k -b:a 128k -ar 16000 fina6555555431l.mp4'; echo shell_exec('whoami'); passthru($cmd,$res); var_dump('zhuangtai'.$res); </code>
在終端機中運行這個php文件,是可以正常轉碼的
但是透過web去存取這個文件就不能轉碼。為什麼? ?
之前沒有寫上ffmpeg的全路徑,passthru()的狀態碼是找不到指令,現在是web中存取回傳1,表示沒有執行成功。
直接在中的中執行php文件,狀態嗎就是0,執行成功。
難道ffmpeg對使用者權限有問題
web列印出來的使用者是www-data
終端機是root
又沒有做過的,這種情況是什麼原因。 。 。 。
。急急急。 。 。
小弟做行動端開發的,,這個不熟,,,自己Google很多了,沒找到原因和解決辦法----
-------! ! ! ! ! ! ! ! ! ! ! ! !
問題場景: 用ffmpeg對檔案進行轉碼。
問題描述: 使用php透過exec()、passthru()、system()這三個方法呼叫終端ffmpeg的指令實作轉碼
程式碼如下:
<code>$cmd = '/usr/local/bin/ffmpeg -i test.mpg -c:v libx264 -b:v 1024k -b:a 128k -ar 16000 fina6555555431l.mp4'; echo shell_exec('whoami'); passthru($cmd,$res); var_dump('zhuangtai'.$res); </code>
在終端機中運行這個php文件,是可以正常轉碼的
但是透過web去存取這個文件就不能轉碼。為什麼? ?
之前沒有寫上ffmpeg的全路徑,passthru()的狀態碼是找不到指令,現在是web中存取回傳1,表示沒有執行成功。
直接在中的中執行php文件,狀態嗎就是0,執行成功。
難道ffmpeg對使用者權限有問題
web列印出來的使用者是www-data
終端機是root
又沒有做過的,這種情況是什麼原因。 。 。 。
。急急急。 。 。
小弟做行動端開發的,,這個不熟,,,自己Google很多了,沒找到原因和解決辦法----
-------! ! ! ! ! ! ! ! ! ! ! ! !
你在終端採用的是root用戶,這個用戶權限無敵,而用web中的用戶權限有限~。