1. 程式人生 > >PHP 的 exec()函式以及獲取其返回值

PHP 的 exec()函式以及獲取其返回值

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()函式的瞭解!