2012-04-26 10 views
3

私はさまざまなサーバー間でいくつかのサイトを運営しています。いくつかのサーバーでは、ApacheサーバーにGeoIPモジュールがインストールされているため、IPアドレスを使用してその場所を知ることができます。例えば、自分たちの国の名前を取得するために、私はこれを行うことができます。PHPにApacheモジュールが存在するかどうか確認できますか?

$countryName = apache_note("GEOIP_COUNTRY_NAME"); 

はしかし、のGeoIPモジュールを使用していない一部のサーバー上で、これがトラブルを起こしているようです。

apache_note("GEOIP_COUNTRY_NAME")が存在する場合は、isset()である場合、$countryName comes空白のテストがあるかどうかを確認するのは十分ではありません。私はちょうどエラーメッセージなしでHTMLレンダリングの失敗を取得するようです。

したがって、GeoIPモジュールがApacheに存在するかどうかを確認するためにPHPでifの文をテストする方法はありますか?

(そのモジュールのインストールはオプションではありません、私はApacheの設定へのアクセスを持っていないのGeoIPモジュールがインストールされていないサーバー上のことに注意してください。)

答えて

4

あなたはapache_get_modulesを使用することができるはずですhttp://php.net/manual/en/function.apache-get-modules.phpを使用して、モジュールがロードされているかどうかを確認します。モジュールが返された配列内にあるかどうかを確認するだけです。あなたがPHPをCGIとして呼び出すのであれば、これは明らかに動作しません。

$mods = apache_get_modules(); 

if (array_search('mod_geoip',$mods)){ 
    print "GEO IP exist"; 
}else{ 
    print "GEO IP Doesn't Exist"; 
} 
関連する問題