3

我在不同的服务器上运行了许多站点。在某些服务器上,Apache 服务器安装了 GeoIP 模块,这样我就可以通过它们的 IP 地址找到它们的位置。例如,要获取他们的国家/地区名称,我可以这样做:

$countryName = apache_note("GEOIP_COUNTRY_NAME");

但是,在一些不使用 GeoIP 模块的服务器上,这似乎会引起麻烦。

似乎检查是否存在$countryName comes返回空测试是不够的。我似乎只是在没有任何错误消息的情况下出现 HTML 渲染失败。apache_note("GEOIP_COUNTRY_NAME")isset()

那么,有没有一种方法可以if在 PHP 中创建一个语句来测试该 GeoIP 模块是否存在于 Apache 中?

(请注意,在未安装 GeoIP 模块的服务器上,我无权访问 Apache 设置,因此无法选择安装该模块。)

4

1 回答 1

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";
}
于 2012-04-26T04:38:25.303 回答