为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
开满天机 2019-09-03 17:13:26
我有以下功能,到目前为止我没有工作。我想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")回声结果总是“死” - 无论如何。有人可以在我出错的地方帮助我吗?和/或者有更好的方法来做同样的结果吗?非常感谢。更新:已修改代码以包含双引号但仍获得相同(不正确)的结果。
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

注意:下面的解决方案在Windows上不起作用。在linux上执行来自控制台的“哪个ping”命令,并相应地设置命令路径(建议的exec调用)


我想你要检查命令的退出状态,而shell_exec给你完整的输出(可能是危险的,命令输出从命令版本更改为版本。出于某种原因)。此外,您的变量$ ip不会在单引号内解释。你必须使用双“”。这可能是您需要修复以使其工作的唯一方法。


但我认为以下代码可以更“便携”。恕我直言,实际上更好地捕获退出状态,而不是尝试解析结果字符串。恕我直言,最好指定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");


查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 1021 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信