使用PHP对IP地址进行ping操作并输出结果

22

我有以下的函数,目前它不起作用。我想对一个IP地址进行ping操作,然后输出该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";
    }

}

当我使用以下示例调用此函数时:

pingAddress("127.0.0.1")

无论如何,回显结果始终为“dead”。

请问有人能帮我找出问题所在吗?或者有没有更好的方法可以得到相同的结果?

非常感谢。

更新:已更正代码以包含双引号,但仍然获得相同(不正确)的结果。


2
你需要在调用 shell_exec 时使用双引号,否则 $ip 将不会被替换。 - Clive
嗨,Clive,谢谢 - 我现在使用双引号,但仍然得到相同的结果。 - Bernard
11个回答

-1
我使用这个函数:
<?php
function is_ping_address($ip) {
    exec('ping -c1 -w1 '.$ip, $outcome, $status);
    preg_match('/([0-9]+)% packet loss/', $outcome[3], $arr);
    return ( $arr[1] == 100 ) ? false : true;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接