2013年6月19日 星期三

4種執行系統外部程式函式

shell_exec()

原始函式=shell_exec ( string cmd)
$message=shell_exec("ls -al");
echo $message;
此方法執行時可將.sh所執行事項儲存在變數中,如$message儲存了所有顯示資訊,頁面到時候可顯示所有訊息。


exec()

原始函式=exec (string command [, string array [, int return_var]])
exec 執行系統外部命令時不會輸出結果,而是回傳結果的最後一行,如果你想得到結果你可以使用第二個參數,讓其輸出到指定的數組。此數組一個記錄代表輸出的一行,即如果輸出結果有20行,則這個數組就有20條記錄,所以,如果你需要回傳輸出調用不同系統外部命令的結果,最好在輸出每一條系統外部命令結果時清空這個數組,以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是回傳數值0。


system()

原始函式=system (string command [, int return_var])
system和exec的區別在於system在執行系統外部命令時,直接將結果輸出到瀏覽器,不需要使用echo 或return 來查看結果,如果執行命令成功則回傳true,反之則回傳false。第二個參數與exec第三個參數含意相同。


passthru()

passthru()與system()的差異,在於passthru()直接將結果輸出到瀏覽器,不需要使用echo 或return 來查看結果,不回傳任何數值,且可以輸出二進制,比如影像數據。

執行4種外部指令的時機:
使用 exec() 命令和數據數組處理所有東西。或者對更簡單的命令。
使用 shell_exec(),尤其是不關心結果時。
如果僅需回傳一個 shell 腳本,建議使用 passthru()。
那該使用哪種函式,這完全取決於程式設計師要實現的目的。

php執行外部程式的權限,可參考http://tw2.php.net/manual/en/features.safe-mode.php

沒有留言:

張貼留言