您从exec
-command 错误地分配了值。如果您阅读PHP-docs,它清楚地表明输出本身存储在分配为第二个参数的变量中。
我试图简单地转储的内容,$output
我得到的结果是:
Array
(
[0] => PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
[1] =>
[2] => --- 192.168.5.1 ping statistics ---
[3] => 3 packets transmitted, 0 received, 100% packet loss, time 1999ms
[4] =>
)
编辑:正如 Marcelo Pascual 指出的,最后一行是从exec
-command 返回的。在这种情况下,它是空行\n
,(显然)不是真或假。如果 ping 成功与否,您将必须获取阵列并检查信息。
所以,这里有一个简单的代码,应该能够确定服务器是离线还是在线。
function ping() {
exec ("ping -c 3 192.168.5.1", $output);
$status = true;
foreach ($output as $v) {
if (strpos($v, '100% packet loss') !== false) {
$status = false;
break;
}
}
return $status;
}
if (ping())
// Server is up
else
// Server is down