Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Reader Laravel Package

maxmind-db/reader

The official PHP API for reading MaxMind DB files, which store data indexed by IPv4 or IPv6 subnets. Install via Composer for the pure PHP implementation or the C extension for faster lookups.

View on GitHub
Deep Wiki
Context7

A pure-PHP API for reading MaxMind DB (.mmdb) files—the binary format that indexes data by IPv4 and IPv6 subnets. Use it to look up geolocation, ASN, and other metadata from MaxMind/GeoIP2 databases, with an optional C extension (maxmind-db/reader-ext) for significantly faster lookups.

  • Simple Reader class: open a database and query by IP
  • Supports both IPv4 and IPv6 subnet lookups
  • Retrieve the database metadata (build date, types, description)
  • Works with Composer or a bundled standalone autoloader
  • Optional native extension for high-performance production use
Frequently asked questions about Reader
How do I install maxmind-db/reader in a Laravel application?
Install it with Composer using composer require maxmind-db/reader:^1.13.1 from your Laravel project root. The package is framework-agnostic, so no Laravel-specific provider is required, but you can bind the Reader as a singleton in a service provider for dependency injection. After installation, confirm that your .mmdb database file is readable by the PHP process.
Does maxmind-db/reader work with Laravel 10, Laravel 11, and PHP 8.2+?
The package has no Laravel-specific version constraints and works in Laravel 10 or 11 as long as your PHP version satisfies the package requirement. Laravel 10 requires PHP 8.1+ and Laravel 11 requires PHP 8.2+, so use a compatible maxmind-db/reader release such as 1.13.x. Check the package composer.json for the exact PHP constraint before upgrading.
Should I use the pure PHP reader or the C extension for maxmind-db/reader?
The C extension is recommended for significantly faster IP lookups and requires the libmaxminddb C library, typically installed via PIE. The pure PHP implementation installs entirely with Composer and needs no compilation, which makes it more portable across restricted or shared hosting environments. Choose the C extension for high-throughput services and pure PHP when deployment simplicity or portability matters more.
How do I perform an IP lookup with maxmind-db/reader in Laravel?
Create a Reader instance with the absolute path to your .mmdb file, then call its get method with an IPv4 or IPv6 address. In Laravel, bind the Reader as a singleton in a service provider so the file handle and metadata are reused across requests. Wrap lookups in try/catch if the database file may be missing, unreadable, or invalid.
Can maxmind-db/reader read GeoIP2 City and Country databases?
Yes, it reads any database in the MaxMind DB format, including GeoIP2-City, GeoIP2-Country, and GeoLite2 .mmdb files. The package only provides the reader, so you must supply a licensed or downloaded database file. Lookup results are returned as a decoded data array matching the database schema.
How much memory does a large .mmdb file use with maxmind-db/reader?
The pure PHP reader keeps the database on disk and reads metadata plus requested records, so memory overhead is usually modest rather than the full file size. Large GeoIP2-City databases still benefit from the operating system page cache and a preloaded Reader singleton. Benchmark with your actual .mmdb file and request pattern before sizing PHP workers.
Is maxmind-db/reader fast enough for high-traffic production IP lookups?
The C extension can handle thousands of lookups per second with sub-millisecond latency on typical hardware, while pure PHP is slower and may become a bottleneck at high request rates. Use a singleton Reader, preload the database path during application startup, and avoid reopening the file on every request. Recent releases fixed earlier memory handling issues, but you should still load-test your PHP version, database size, and server configuration.
How do I handle FileNotFoundException and InvalidDatabaseException with maxmind-db/reader?
Catch FileNotFoundException when the .mmdb path is wrong or unreadable and InvalidDatabaseException when the file is not a valid MaxMind DB. In Laravel, convert these into a clear configuration or health-check failure instead of a generic 500 response. Also verify file permissions and open_basedir restrictions, since the reader must open the database file.
How do I test maxmind-db/reader integration in Laravel?
In Laravel tests, bind a fake Reader or a small test .mmdb fixture into the container instead of using the production database. Because the Reader is a concrete class, wrap it behind a small interface or use a mocking library to swap lookup behavior. Assert both successful IP lookups and exception paths such as missing or invalid database files.
What are alternatives to maxmind-db/reader for IP geolocation in Laravel?
geoip2/geoip2 is a higher-level MaxMind API that uses this reader and may be simpler when you want GeoIP2 record objects. You can also call MaxMind web services or use another IP intelligence provider if you do not want to ship .mmdb files. Community Laravel packages may wrap these options, but maxmind-db/reader remains the low-level reader for MaxMind DB files.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums