gpt4 book ai didi

php - 使用 PHP ping 一个 IP 地址并回显结果

转载 作者:行者123 更新时间:2023-11-30 21:44:38 28 4
gpt4 key购买 nike

我有以下功能,但我目前无法使用。我想 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")

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

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

非常感谢。

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

最佳答案

注意:以下解决方案不适用于 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");

关于php - 使用 PHP ping 一个 IP 地址并回显结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49997029/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com