我有以下功能,到目前为止我没有工作。我想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")回声结果总是“死” - 无论如何。有人可以在我出错的地方帮助我吗?和/或者有更好的方法来做同样的结果吗?非常感谢。更新:已修改代码以包含双引号但仍获得相同(不正确)的结果。
3 回答
绝地无双
TA贡献1946条经验 获得超4个赞
注意:下面的解决方案在Windows上不起作用。在linux上执行来自控制台的“哪个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");
- 3 回答
- 0 关注
- 1021 浏览
添加回答
举报
0/150
提交
取消