使用 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")

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

有人可以帮我我哪里出错了吗?和/或是否有更好的方法来获得相同的结果?

非常感谢。

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

原文由 Bernard 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

注意:以下解决方案不适用于 Windows。在 Linux 上从控制台执行“which 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");

原文由 maraspin 发布,翻译遵循 CC BY-SA 3.0 许可协议

这在 Wordpress 中对我也不起作用。我也试过 -t 和 -n 等方法,但没有用。我用了,

 function pingAddress($ip) {
    $pingresult = exec("/bin/ping -c2 -w2 $ip", $outcome, $status);
    if ($status==0) {
    $status = "alive";
    } else {
    $status = "dead";
    }
    $message .= '<div id="dialog-block-left">';
    $message .= '<div id="ip-status">The IP address, '.$ip.', is  '.$status.'</div><div style="clear:both"></div>';
    return $message;
}
// Some IP Address
pingAddress("192.168.1.1");

最后,这对我来说非常有效。我从 http://www.phpscriptsdaily.com/php/php-ping/ 引用了这个希望这会有所帮助

好吧,我想修改它,因为它在我的本地主机上运行良好,但在我的实时服务器上却不行 对于实时服务器,我得到了另一件事,它现在既适用于本地主机,也适用于实时服务器。

 $fp = fSockOpen($ip,80,$errno,$errstr,1);
if($fp) { $status=0; fclose($fp); } else { $status=1; }

然后我显示服务器为 0 为 up,为 1 为 down。

这非常适合我。我从 Ping 网站得到这个并用 PHP 返回结果 谢谢@karim79

原文由 Nilamkumar Patel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题