这是用于读取 MaxMind DB 文件的 PHP API。 MaxMind DB 是一种二进制文件格式,存储按 IP 地址子网(IPv4 或 IPv6)索引的数据。
我们建议使用 Composer 安装此软件包。
要下载 Composer,请在项目的根目录中运行:
curl -sS https://getcomposer.org/installer | php
现在您的项目目录中应该有文件composer.phar
。
在项目根目录中运行:
php composer.phar require maxmind-db/reader:~1.0
您现在应该在项目目录中拥有文件composer.json
和composer.lock
以及目录vendor
。如果您使用版本控制系统,则应将composer.json
添加到其中。
安装依赖项后,您需要从代码中引入 Composer 自动加载器:
require ' vendor/autoload.php ' ;
如果您出于某种原因不想使用 Composer,可以在项目根目录中为您提供自定义autoload.php
。要使用该库,只需包含该文件,
require ( ' /path/to/MaxMind-DB-Reader-php/autoload.php ' );
然后正常实例化 reader 类:
use MaxMind Db Reader ;
$ reader = new Reader ( ' example.mmdb ' );
RPM 可在 Fedora 官方存储库中找到。
要在 Fedora 上安装,请运行:
dnf install php-maxminddb
要在 CentOS 或 RHEL 7 上安装,首先启用 EPEL 存储库,然后运行:
yum install php-maxminddb
请注意,这些软件包不是由 MaxMind 维护的。
<?php
require_once ' vendor/autoload.php ' ;
use MaxMind Db Reader ;
$ ipAddress = ' 24.24.24.24 ' ;
$ databaseFile = ' GeoIP2-City.mmdb ' ;
$ reader = new Reader ( $ databaseFile );
// get returns just the record for the IP address
print_r ( $ reader -> get ( $ ipAddress ));
// getWithPrefixLen returns an array containing the record and the
// associated prefix length for that record.
print_r ( $ reader -> getWithPrefixLen ( $ ipAddress ));
$ reader -> close ();
MaxMind 提供了一个可选的 C 扩展,它是MaxMindDbReader
的直接替代品。为了使用此扩展,您必须如上所述安装 Reader API,并按如下所述安装扩展。如果您使用自动加载器,则无需更改代码。
首先按照 README.md 文件中的说明安装 libmaxminddb。成功安装 libmaxmindb 后,您可以从 pecl 安装扩展:
pecl install maxminddb
或者,您可以从源安装它。为此,请从此发行版的顶级目录运行以下命令:
cd ext
phpize
./configure
make
make test
sudo make install
然后您必须加载您的扩展。推荐的方法是将以下内容添加到php.ini
文件中:
extension=maxminddb.so
注意:您可能需要在操作系统上安装 PHP 开发包,例如基于 Debian 的系统的 php5-dev 或基于 RedHat/Fedora 的系统的 php-devel。
MaxMind DB 格式包括 128 位无符号整数作为类型。尽管目前没有 MaxMind 分布式数据库使用此类型,但纯 PHP 阅读器和 C 扩展都支持此类型。纯 PHP 读取器需要 gmp 或 bcmath 来读取具有 128 位无符号整数的数据库。
当前,C 扩展以十六进制字符串(前缀为“0x”)的形式返回整数,纯 PHP 阅读器以十进制字符串(无前缀)的形式返回该整数。使读取器实现始终返回整数的十六进制或十进制表示形式的任何更改都不会被视为重大更改。
请使用 GitHub 问题跟踪器报告此代码的所有问题。
如果您遇到的 MaxMind 服务问题并非特定于客户端 API,请参阅我们的支持页面。
该库需要 PHP 7.2 或更高版本。
使用纯 PHP API 读取某些数据库可能需要 GMP 或 BCMath 扩展。
鼓励补丁和拉取请求。所有代码都应遵循 PSR-1 和 PSR-2 风格指南。请尽可能包含单元测试。
MaxMind DB Reader PHP API 使用语义版本控制。
本软件版权所有 (c) 2014-2024,归 MaxMind, Inc. 所有。
这是免费软件,根据 Apache 许可证 2.0 版获得许可。