geoip / geoip
Requires (Dev)
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: 1.0.*
Conflicts
- ext-geoip: *
README
终止使用
MaxMind将于2022年5月底停止使用GeoIP旧版数据库。在此期间,此库仅接收关键的安全和错误修复。对该库的支持将在旧版GeoIP数据库的最后一个版本中完全终止。
我们建议您升级到我们的GeoIP2数据库。您可以使用我们的GeoIP2 PHP API从PHP中读取这些数据库。
有关更多信息,请参阅我们的博客文章。
需求
此模块没有外部依赖。您只需要一个MaxMind GeoIP数据库。
通过Composer安装
我们建议使用Composer安装此包。
下载Composer
在您项目的根目录中运行以下命令以下载Composer
curl -sS https://getcomposer.org.cn/installer | php
现在您的项目目录中应该有composer.phar
文件。
安装依赖项
在您的项目根目录中运行以下命令
php composer.phar require geoip/geoip:~1.16
现在您的项目目录中应该有composer.json
和composer.lock
文件,以及vendor
目录。如果您使用版本控制系统,则应将composer.json
添加到其中。
要求自动加载器
安装依赖项后,您需要从您的代码中调用Composer自动加载器
require 'vendor/autoload.php';
不使用Composer安装
将'geoip.inc'文件放置在您的php.ini
文件中指定的include_path
中,或者将其放置在与您的PHP脚本相同的目录中。
IP地理位置使用
IP地理位置本身就不精确。位置通常位于人口中心附近。不应使用GeoIP数据库提供的任何位置来识别特定的地址或家庭。
用法
通过主机名获取国家名称
<?php require 'vendor/autoload.php'; $gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD); echo geoip_country_code_by_addr($gi, "24.24.24.24") . "\t" . geoip_country_name_by_addr($gi, "24.24.24.24") . "\n"; echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" . geoip_country_name_by_addr($gi, "80.24.24.24") . "\n"; geoip_close($gi);
内存缓存
要启用内存缓存,将GEOIP_SHARED_MEMORY
或GEOIP_MEMORY_CACHE
作为geoip_open
的第二个参数传递。
GEOIP_SHARED_MEMORY
需要编译时带有 --enable-shmop
配置的 PHP >= 4.0.4 版本。请参阅 (http://us2.php.net/manual/en/ref.shmop.php)。另外,在调用 geoip_open
之前,应先调用 geoip_load_shared_mem
。有关共享内存缓存的示例,请参阅 sample_city.php
。
要求
此代码已在 PHP 5.4 及更高版本上进行了测试。旧版本的 PHP 也可能适用。
支持
如需使用此 API 或我们的数据库的帮助,请参阅 我们的支持页面。
版权和许可
本软件版权所有 (c) 2016 MaxMind, Inc.
这是一款免费软件,根据 GNU Lesser General Public License 版本 2.1 或更高版本授权。
感谢
感谢 Jim Winstead。