2012-01-17 33 views
1

我以前问及如何创建一个ping功能这个问题here并与后续的上前:平其功能不良的结果

<?php 
function pingAddress($ip) { 
    $pingresult = exec("ping -n 3 $ip", $outcome, $status); 
    if (1 != $status) { 
     $status = "alive"; 
    } else { 
     $status = "dead"; 
    } 
    echo "The IP address, $ip, is ".$status; 
} 

这有希望的结果,直到我发现它返回的IP地址192.168 .0.3当我知道它不存在时仍然活着。

我通过标准的Windows检查命令提示符,它返回如下:

Reply from 192.168.0.2: Destination host unreachable. 
Reply from 192.168.0.2: Destination host unreachable. 
Reply from 192.168.0.2: Destination host unreachable. 
Reply from 192.168.0.2: Destination host unreachable. 

我假定该函数认为它活着,由于其书面的方式,它如何从回复“返回?但是我不太确定 - 任何人都可以对此有所了解吗?

感谢

回答

1

其为错误类型的出口值不1,因此您的病情会有意想不到的结果。请尝试以下操作:

if ($status == 0) { 
    $status = "alive"; 
} else { 
    $status = "dead"; 
} 
+0

我已经相应改变出口值,但仍然得到相同的结果(192.168.0.3生还虽然目的地不可达) – Bernard 2012-01-18 00:19:31

+0

@Bernard:在该系统中,你运行'ping'? – 2012-01-18 00:23:43

+0

的Apache在Windows – Bernard 2012-01-18 00:29:57

1
$ man ping 

... 

RETURN VALUES 
    The ping utility returns an exit status of zero if at least one response 
    was heard from the specified host; a status of two if the transmission 
    was successful but no responses were received; or another value (from 
    <sysexits.h>) if an error occurred. 

你应该检查的0,不!= 1返回代码。