我有以下功能,但我目前无法使用。我想 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 许可协议
注意:以下解决方案不适用于 Windows。在 Linux 上从控制台执行“which ping”命令,并相应地设置命令路径(建议的 exec 调用)
我想你想检查命令的退出状态,而 shell_exec 给你完整的输出(如果命令输出从命令版本更改到版本可能很危险。出于某种原因)。此外,您的变量 $ip 不会在单引号内解释。你必须使用双“”。这可能是您唯一需要解决的问题才能使其正常工作。
但我认为下面的代码可以更“便携”。恕我直言,实际上捕获退出状态比尝试解析结果字符串更好。恕我直言,最好指定 ping 命令的完整路径。