2012-12-03 204 views
1

我想一個FLV文件轉換成MPG 使用avconv運行它先後使用終端。我的問題是使用PHP腳本運行命令。我寫了一個代碼,但我沒有得到結果。我的代碼如下運行CLI命令使用PHP腳本

<?php 
$cmd="avconv -i http://localhost/test3/a.flv http://localhost/test3/intermediate1.mpg"; 
$results = shell_exec($cmd.'2>&1'); 
?> 

我想也下面的代碼,但沒有運氣

<?php 
$cmd="avconv -i /home/elby/workspace/test3/a.flv /home/elby/workspace/test3/intermediate1.mpg"; 
$results = shell_exec($cmd.'2>&1'); 
echo $results; 
?> 
+0

更多信息?代碼如何失敗?任何錯誤消息? – Vyktor

+1

您是否檢查過shell_exec是否適用於您?嘗試類似於'echo shell_exec('echo foo');'根據配置,可以禁用shell函數。 – EJTH

+0

在'2>&1'之前缺少空格,導致命令中的文件名爲'intermediate1.mpg2'。 –

回答

3

首先,第一個執行的例子是無感,根據manual of avconv它需要兩個參數:

avconv [global options] [[infile options][-i infile]]... {[outfile options] outfile}... 

你不能只是告訴程序將文件保存到http協議那樣。

第二次調用......有幾個可能的問題與:

  • 你是從網絡或從CLI運行腳本? Web服務器可以(而且很可能會)使用的不會有文件夾的訪問
  • PHP腳本有timeout (default 30 seconds)和視頻轉換採取不同的用戶有更多
  • PHP可能有shell_exec disabled
  • PHP可能safe_mode開啓
  • PHP可能有PATH環境變量的問題,嘗試你可能已經錯誤登錄使用絕對路徑
  • 隨着殘疾人error_reporting但不顯示
0
$cmd="avconv -i /home/elby/workspace/test3/a.flv /home/elby/workspace/test3/intermediate1.mpg"; 
$results = shell_exec($cmd.' 2>&1'); 
echo $results; 

使用avconv的絕對路徑。