[英]Exec ping command doesn't work on Linux Centos
美好的一天,
我正在使用一個系統來檢查某個IP地址是打開還是關閉。 我有一個MySQL DB,其數據庫表包含IP地址列表。我創建了以下函數來ping IP地址:
function pingAddress($ip) {
$result = exec('ping $ip -i 15 ', $outcome, $status);
if (0 == $status) {
echo 'Server UP ';
} else {
echo 'Server down ';
}
}
在我的while循環中,我有以下內容:
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
?>
<tr>
<td><?php pingAddress($row['client_ip_address']); ?></td>
</tr>
<?php
} //end while
?>
但是,我總是得到2,而不是得到0(因為服務器已啟動)。
我已經替換了行$result = exec('ping $ip -i 15 ', $outcome, $status);
$pingresult = system("ping -n 3 $ip 2>&1", $outcome, $status);
或$pingresult = shell_exec('/bin/ping -qc 1 '.$ip.' | awk -F/ \\'/^rtt/\\'', $result); OR ('ping $ip -i 15 ', $outcome, $status);
$pingresult = shell_exec('/bin/ping -qc 1 '.$ip.' | awk -F/ \\'/^rtt/\\'', $result); OR ('ping $ip -i 15 ', $outcome, $status);
結果仍然沒有改變。 我得到一個空數組(執行var_dump($status)
或var_dump($outcome)
)。
我正在使用安裝了Apache的Centos7。
我缺少了一些東西,因為我根據以前的類似問題嘗試了此處建議的大多數解決方案,但是沒有用。
有沒有更好的方法來編碼這樣的系統?
謝謝你的協助。
您可能需要修改exec
的語法:
$result = exec('ping -i 15 -c 3 ' . $ip, $outcome, $status);
另外,您可以包括-c
或任何ping count
選項...否則它將永久運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.