使用PHP ping IP地址并回显结果

我有以下功能,到目前为止我没有工作。我想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";

    }


}

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


pingAddress("127.0.0.1")

回声结果总是“死” - 无论如何。


有人可以在我出错的地方帮助我吗?和/或者有更好的方法来做同样的结果吗?


非常感谢。


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


开满天机
浏览 1022回答 3
3回答

绝地无双

注意:下面的解决方案在Windows上不起作用。在linux上执行来自控制台的“哪个ping”命令,并相应地设置命令路径(建议的exec调用)我想你要检查命令的退出状态,而shell_exec给你完整的输出(可能是危险的,命令输出从命令版本更改为版本。出于某种原因)。此外,您的变量$ ip不会在单引号内解释。你必须使用双“”。这可能是您需要修复以使其工作的唯一方法。但我认为以下代码可以更“便携”。恕我直言,实际上更好地捕获退出状态,而不是尝试解析结果字符串。恕我直言,最好指定ping命令的完整路径。<?phpfunction pingAddress($ip) {&nbsp; &nbsp; $pingresult = exec("/bin/ping -n 3 $ip", $outcome, $status);&nbsp; &nbsp; if (0 == $status) {&nbsp; &nbsp; &nbsp; &nbsp; $status = "alive";&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; $status = "dead";&nbsp; &nbsp; }&nbsp; &nbsp; echo "The IP address, $ip, is&nbsp; ".$status;}pingAddress("127.0.0.1");
打开App,查看更多内容
随时随地看视频慕课网APP