exec
-commandからの値を間違って割り当てています。PHP-docsを読むと、出力自体が2番目の引数として割り当てられた変数に格納されていることが明確に述べられています。
のコンテンツを単純にダンプしようとしましたが$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