exec --- 執行外部程式
語法 : string exec ( string command [, array &output [, int &return_var]] )
exec函數解析
exec語法: string exec(string command, string [array], int [return_var]);
exec返回值: 字符串
Exec參數說明
Command – 需要執行的命令
Array – 是輸出值
return_var –是返回值0或1,如果返回0則執行成功,返回1則執行失敗。
exec不成功,調試方案
一個技巧就是使用管道命令, 使用 2>&1, 命令就會輸出shell執行時的錯誤到$output變量, 輸出該變量即可分析。
如:
exec('convert a.jpg b.jpg', $output, $return_val);
改為:
exec('convert a.jpg b.jpg 2>&1', $output, $return_val);
print_r($output);
說明 :
exec( )執行給予的命令command,不過它並不會輸出任何東西,它簡單的從命令的結果中傳回最后一行,如果你需要去執行一個命令,並且從命令去取得所有資料時,可以使用passthru( )這個函數。
如果有給予參數array,則指定的數組將會被命令所輸出的每一行填滿,注意 : 如果數組先前已經包含了一些元素的話,exec( )將會把它附加在數組的后面,如果你不想要此函數附加元素的話,你可以在傳遞此數組給exec( )之前呼叫unset( )。
如果有給予參數array和return_var,則傳回執行的狀態命令將會寫到這個變量。
注意 : 如果你允許來自使用者輸入的資料,可以傳遞到此函數,那么你應該使用escapeshellcmd( )來確定此使用者無法哄騙(trick)系統來執行武斷的(arbitrary)命令。
注意 : 如果你使用此函數來啟動一個程式,而且希望在背景里(background)執行的時候離開它,你必須確定此程式的輸出是轉向(redirected)到一個文件或是一些輸出的資料流,否則PHP將會懸掛(hang)直到程式執行結束。