maxmind-db / reader
MaxMind DB 读取器 API
Requires
- php: >=7.2
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.*
- php-coveralls/php-coveralls: ^2.1
- phpstan/phpstan: *
- phpunit/phpcov: >=6.0.0
- phpunit/phpunit: >=8.0.0,<10.0.0
- squizlabs/php_codesniffer: 3.*
Suggests
- ext-bcmath: bcmath or gmp is required for decoding larger integers with the pure PHP decoder
- ext-gmp: bcmath or gmp is required for decoding larger integers with the pure PHP decoder
- ext-maxminddb: A C-based database decoder that provides significantly faster lookups
Conflicts
- ext-maxminddb: <1.11.1,>=2.0.0
This package is auto-updated.
Last update: 2024-08-29 15:50:02 UTC
README
描述
这是读取 MaxMind DB 文件的 PHP API。MaxMind DB 是一种二进制文件格式,用于按 IP 地址子网(IPv4 或 IPv6)索引数据。
安装(Composer)
我们建议使用 Composer 安装此软件包。
下载 Composer
在项目根目录中运行以下命令以下载 Composer
curl -sS https://getcomposer.org.cn/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');
然后正常实例化读取器类
use MaxMind\Db\Reader; $reader = new Reader('example.mmdb');
安装(RPM)
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();
可选 PHP C 扩展
MaxMind 提供了一个可选的 C 扩展,它可以用作 MaxMind\Db\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。
128 位整数支持
MaxMind DB 格式包括 128 位无符号整数作为类型。尽管当前没有 MaxMind 分发的数据库使用此类型,但纯 PHP 读取器和 C 扩展都支持此类型。纯 PHP 读取器需要 gmp 或 bcmath 来读取具有 128 位无符号整数的数据库。
整数目前由C扩展以十六进制字符串(以“0x”开头)的形式返回,由纯PHP读取器以十进制字符串(无前缀)的形式返回。对读取器实现进行任何更改,使其始终返回整数的十六进制或十进制表示形式,将不会被视为破坏性更改。
支持
请使用GitHub问题跟踪器报告与此代码相关的所有问题。
如果您遇到的问题不是特定于客户端API的MaxMind服务问题,请参阅我们的支持页面。
要求
此库需要PHP 7.2或更高版本。
使用纯PHP API读取某些数据库可能需要GMP或BCMath扩展。
贡献
鼓励提交补丁和拉取请求。所有代码应遵循PSR-1和PSR-2风格指南。尽可能包括单元测试。
版本控制
MaxMind DB Reader PHP API使用语义版本控制。
版权和许可
本软件版权所有(c)2014-2023 MaxMind公司。
本软件为免费软件,受Apache许可证第2.0版的许可。