exec
執行外部程式。
文法: string exec(string command, string [array], int [return_var]);
傳回值: 字串
函數種類: 作業系統與環境
內容說明
本函數執行輸入 command 的外部程式或外部指令。它的返回字串只是外部程式執行後返回的最後一行;若需要完整的返回字串,可以使用 PassThru() 這個函數。
要是參數 array 存在,command 會將 array 加到參數中執行,若不欲 array 被處理,可以在執行 exec() 之前呼叫unset() 。若是 return_var 跟 array 二個參數都存在,則執行 command 之後的狀態會填入 return_var 中。
值的注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用 EscapeShellCmd()。
問:
我如何在exec("ping $PingDNS", $Info);執行後取得一個傳回值,這個傳回值能夠標記它是否ping通或沒有ping通,exec只能返回外部程式執行後傳回的最後一行啊,help me!!!!
答1:
函數:passthru()
--------------------------------------------------------------------------------
程式執行功能函數庫
passthru
執行外部程式並不加處理輸出資料。
文法: string passthru(string command, int [return_var]);
傳回值: 字串
函數種類: 作業系統與環境
內容說明
本函數類似 Exec() 用來執行 command 指令,並輸出結果。若是 return_var 參數存在,則執行 command 之後的狀態會填入 return_var 中。若輸出的資料是二進位的資料,並且需要輸出到瀏覽器中的話,使用本函數就相當合適了。例如使用 pbmplus 工具來執行指令,並返回二進位的圖形資料。可以先配置返回資料的標題 (header) 為 Content-type: image/gif,然後呼叫 pbmplus 程式處理圖形資料,並將二進位的圖形資料直接返回瀏覽器。
exec("ping $PingDNS", $Info);
將返回一個串,形如:
Reply from x.x.x.x: bytes=32 time<10ms TTL=128
Bad IP address expert.csdn.NET
...
根據這些串的內容可分析出來
另外$Info中保留有執行的過程
附:
今天我在前台PHP向後台C發訊息的時候用到的該函數:
後台要求在使用者操作介面之後即寫動作記錄後要向後台C發一個訊息
$juser = $_SESSION['wms_user'];
exec("/usr/local/apam_new/bin/apam_debug -a operate:$juser,1");
//下面是我的測試方法:
//看有沒有將訊息發至後台
exec("/usr/local/apam_new/bin/apam_debug -a operate:$juser,1",$info);
echo var_dump($info);
結果顯示訊息發至後台,並將背景print的資訊輸出到了fireFox的Firebug欄
主要是要加強對php的exec()函數的瞭解!