1

我无法让 PHP ping 本地计算机。我只是想能够检查计算机是否处于唤醒状态。

我已经看到了许多在搜索时 ping 的方法,但似乎没有一个对我有用。我相信这是因为在 Ubuntu 上,ping 需要 root 权限,而 PHP 没有。大多数示例使用某种形式的

exec("ping ".$ip);

但任何方法对我来说都可以。有任何想法吗?

4

1 回答 1

1

在我的 Ubuntu 系统上,命令ls -l /bin/ping显示:

-rwsr-xr-x 1 root root 34716 2010-11-15 09:08 /bin/ping

这意味着虽然“ping”归root所有,但所有用户都可以执行它。
您应该尝试使用以下 PHP 代码:

<html>
<body>
<pre>
<?php 
$result = exec("/bin/ping -c 1 -W 1 127.0.0.1"); 
echo "result=".$result."\n";
?>
</pre>
</body>
</html>

显然,您应该将“127.0.0.1”替换为您网络的有效 IP 地址。
-c 1选项在发送一个数据包后停止 ping,如手册页中所述:

-c count
在发送 count ECHO_REQUEST 数据包后停止。
使用截止时间选项,ping 等待计数 ECHO_REPLY 数据包,直到超时到期。

-W 1如果在一秒钟后没有得到响应,该选项会强制 ping 停止:

-W timeout
等待响应的时间,以秒为单位。
该选项仅在没有任何响应的情况下影响超时,否则 ping 会等待两个 RTT。

于 2012-08-22T20:10:20.747 回答