我有以下功能,到目前為止我沒有工作。我想ping一個IP地址,然后回顯IP是否存在。function pingAddress($ip){ $pingresult = shell_exec("start /b ping $ip -n 1"); $dead = "Request timed out."; $deadoralive = strpos($dead, $pingresult); if ($deadoralive == false){ echo "The IP address, $ip, is dead"; } else { echo "The IP address, $ip, is alive"; }}當我使用示例調(diào)用此函數(shù)時:pingAddress("127.0.0.1")回聲結(jié)果總是“死” - 無論如何。有人可以在我出錯的地方幫助我嗎?和/或者有更好的方法來做同樣的結(jié)果嗎?非常感謝。更新:已修改代碼以包含雙引號但仍獲得相同(不正確)的結(jié)果。
3 回答

絕地無雙
TA貢獻1946條經(jīng)驗 獲得超4個贊
注意:下面的解決方案在Windows上不起作用。在linux上執(zhí)行來自控制臺的“哪個ping”命令,并相應(yīng)地設(shè)置命令路徑(建議的exec調(diào)用)
我想你要檢查命令的退出狀態(tài),而shell_exec給你完整的輸出(可能是危險的,命令輸出從命令版本更改為版本。出于某種原因)。此外,您的變量$ ip不會在單引號內(nèi)解釋。你必須使用雙“”。這可能是您需要修復(fù)以使其工作的唯一方法。
但我認為以下代碼可以更“便攜”。恕我直言,實際上更好地捕獲退出狀態(tài),而不是嘗試解析結(jié)果字符串。恕我直言,最好指定ping命令的完整路徑。
<?php
function pingAddress($ip) {
$pingresult = exec("/bin/ping -n 3 $ip", $outcome, $status);
if (0 == $status) {
$status = "alive";
} else {
$status = "dead";
}
echo "The IP address, $ip, is ".$status;
}
pingAddress("127.0.0.1");
- 3 回答
- 0 關(guān)注
- 1043 瀏覽
添加回答
舉報
0/150
提交
取消