我有以下功能,到目前为止我还无法使用。我想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")
无论如何,回声结果总是“死”。
有人可以帮我解决我的问题吗?和/或是否有更好的方法可以达到相同的效果?
非常感谢。
更新:修改了代码以包括双引号,但仍然得到相同(不正确)的结果。
注意:以下解决方案在Windows上不起作用。 在linux exec上,从控制台执行“ 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");