首頁 >後端開發 >php教程 >ffmpeg-php ffmpeg passthru()函數在終端機執行php檔案可以轉碼,web存取這個php檔案就不能轉碼。什麼原因? ?

ffmpeg-php ffmpeg passthru()函數在終端機執行php檔案可以轉碼,web存取這個php檔案就不能轉碼。什麼原因? ?

WBOY
WBOY原創
2016-08-29 08:50:491537瀏覽

問題場景: 用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中的用戶權限有限~。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn