使用PHP Ping一个IP地址并回显结果
发布时间:2020-12-13 14:03:37 所属栏目:PHP教程 来源:网络整理
导读:我有以下功能,我到目前为止没有工作.我想ping一个IP地址,然后回显IP是否存活. function pingAddress($ip){ $pingresult = shell_exec("start /b ping $ip -n 1"); $dead = "Request timed out."; $deadoralive = strpos($dead,$pingresult); if ($deadoraliv
我有以下功能,我到目前为止没有工作.我想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,is alive"; } } 当我用这个例子来调用这个函数: pingAddress("127.0.0.1") 回声结果总是“死”,无论如何. 有人可以帮助我,我错了吗? 非常感谢. 更新:修改代码以包含双引号,但仍然得到相同(不正确的)结果.
注意:下面的解决方案在Windows上不起作用.在linux上执行一个“哪个ping”命令,并且相应地设置命令路径(建议的exec调用)
我想你想检查命令的退出状态,而shell_exec给你全输出(由于某些原因,可能会命令输出从命令版本更改到版本是危险的).此外,您的变量$ip不会在单引号内解释.你必须使用双重的“”.这可能是您需要解决的唯一的事情,以使其工作. 但是我认为以下代码可以更加“便携”. IMHO实际上更好地捕获退出状态,而不是尝试解析结果字符串.指定完整的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,is ".$status; } pingAddress("127.0.0.1"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |