2017-08-15 66 views
1

我試圖從bash命令獲取輸出。 如果我在bash中直接執行some命令,我會看到結果。但不能與PHP exec()函數..PHP exec()不從bash命令抓取輸出

$command = "ffmpeg -i '$video_path' 2>&1 | grep Video | perl -wle 'while(<>){ $_ =~ /.*?(\d+x\d+).*/; print $1; }'"; 
$res = exec($command/*, $output*/); 

print_r($res); 
// print_r($output); 

此命令嘗試使用ffmpeg lib獲得視頻分辨率。視頻路徑很好,我三重檢查。

謝謝!

編輯:從輸出截圖在bash

enter image description here

+1

Per [the docs](http://php.net/manual/en/function.exec.php),「命令結果的最後一行。如果你需要執行一個命令並且擁有所有的來自命令的數據直接返回,沒有任何干擾,使用'passthru()'函數。「 – ceejayoz

+2

將命令的完整輸出轉換爲字符串的最簡單方法是使用反引號(') – iainn

+0

看起來您已經嘗試將輸出參數用於exec,它將包含所有輸出,而不是最後一行。以這種方式運行時,$輸出中有什麼? –

回答

2

嘗試用一個反斜槓您正則表達式轉義$。由於你用雙引號包裝所有東西,PHP試圖插入$ _的值,這不是問題。當我運行你的代碼時,我得到了一個未定義的變量通知。它在我逃離$時起作用。

+0

感謝羅布,它也適用於我:) – mauriblint