从apache错误日志中排除ping(从PHP执行)

现在,由于多种原因,我需要定期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"; } } 

问题是,每当有一个未知的主机,我会得到一个错误logging到我的apache错误日志(/var/log/apache/error.log)。 我将如何去禁用这个特定function的日志?

禁用vhost中的日志不是一个选项,因为该vhost的日志是相关的,而不是ping。

谢谢,

你需要改变你的function的东西 – 基本上exec执行不会捕获写入日志文件的标准错误 – 您需要更改function如下

 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"; 

}