Apache-2.2
從 apache 錯誤日誌中排除 ping(從 PHP exec 執行)
現在,出於多種原因,我需要定期 ping 幾台主機以顯示儀表板。
我使用這個 PHP 函式來做到這一點:
function PingHost($strIpAddr) { exec(escapeshellcmd('ping -q -W 1 -c 1 '.$strIpAddr), $dataresult, $returnvar); if (substr($dataresult[4],0,3) == "rtt") { //We got a ping result, lets parse it. $arr = explode("/",$dataresult[4]); return ereg_replace(" ms","",$arr[4]); } elseif (substr($dataresult[3],35,16) == "100% packet loss") { //Host is down! return "Down"; } elseif ($returnvar == "2") { return "No DNS"; } }
問題是每當有未知主機時,我都會在我的 apache 錯誤日誌 (/var/log/apache/error.log) 中記錄一個錯誤。我將如何禁用此特定功能的日誌?
禁用虛擬主機中的日誌不是一個選項,因為該虛擬主機的日誌是相關的,而不是 ping。
謝謝,
您需要將某些內容更改為您的函式-基本上 exec 不會擷取寫入日誌文件的標準錯誤-您需要按以下方式更改函式
function PingHost($strIpAddr) { exec(escapeshellcmd('ping -q -W 1 -c 1 '.$strIpAddr.' 2>&1'), $dataresult, $returnvar); if (substr($dataresult[4],0,3) == "rtt") { //We got a ping result, lets parse it. $arr = explode("/",$dataresult[4]); return ereg_replace(" ms","",$arr[4]); } elseif (substr($dataresult[3],35,16) == "100% packet loss") { //Host is down! return "Down"; } elseif ($returnvar == "2") { return "No DNS"; } if($returnvar == 68) return "Unknown host";
}