为什么只返回其中一些 geoip 值?

Why are only some of these geoip values being returned?

我在 Ubuntu 12.04 上有一个 Web 服务器 运行 Apache2。我已经安装了 geoip-databaselibapache2-mod-geoip1.2.5-2libgeoip1 1.4.8+dfsg-2php5-geoip

我把这个测试 PHP 代码放在我的服务器上:

<?php
echo "country: " . apache_note("GEOIP_COUNTRY_NAME") . '<br>';
echo "code: " . apache_note("GEOIP_COUNTRY_CODE") . '<br>';
echo "city: " . apache_note("GEOIP_CITY") . '<br>';
echo "region: " . apache_note("GEOIP_REGION") . '<br>';
echo "latitude: " . apache_note("GEOIP_LATITUDE") . '<br>';
echo "longitude: " . apache_note("GEOIP_LONGITUDE") . '<br>';
echo "timezone: " . geoip_time_zone_by_country_and_region($this->countryCode, $this->region);

当我在浏览器中访问它时,我得到以下输出:

country: Japan
code: JP
city:
region:
latitude:
longitude: 
timezone:

我对只有两个值返回的事实感到困惑。如果 GeoIP 模块没有正确安装,它会不会完全没有任何值而完全失败?

是否有一些库或我缺少的东西?

如何让我的代码获得 return 所有值,例如纬度和经度?

您可能正在使用免费的 GeoLite IP 数据库。此数据库仅包含国家信息。

包含更详细信息(例如纬度和经度)的数据库可从 Maxmind 付费获得。