Net_Pingの現時点での最新バージョン、2.4.3にはバグがあります。
http://pear.php.net/manual/ja/package.networking.net-ping.php
Net_Pingは指定したホストに対してpingを撃ってくれるPearパッケージですが、
そのメソッドのひとつ、checkHostはホストの生死判定を行います。
が、このメソッドを呼び出した場合、必ず下記のエラーが発生します。
Fatal error: Cannot use object of type Net_Ping_Result as array in Ping.php on line 425
該当部分は以下
preg_match_all('|\d+|', $res[3], $matches)
この$retはPear::pingの返り値なのですが、これはオブジェクトとして返ってきます。
オブジェクトに対して$ret[3]なんて指定は当然出来ませんのでエラーになります。
ロードマップには次回の更新予定が掲載されています。
http://pear.php.net/bugs/roadmap.php?package=Net_Ping&roadmapdetail=2.4.4#a2.4.4
>Windows XP
>Function CheckHost fails with error every time.
え?Windowsだけ?
それよりも2.4.3から一年も放置のままというのはどうなんだ。
それにしてもこのパッケージ、バージョン情報が
// $Id: Ping.php,v 1.47 2007/12/28 04:30:42 cconstantine Exp $
とかしか書いてないのだが本当に2.4.3?
エラーになる超簡単なサンプルコード。
ping.php
1
2
3
4
|
require_once "Net/Ping.php";
$ping = Net_Ping::factory();
$ping->checkHost('www.google.co.jp');
|