Service provider and DB downloader for Maxminds PHP API GeoIP2.
danielme85/laravel-geoip2 is a Laravel package for service provider and db downloader for maxminds php api geoip2..
It currently has 15 GitHub stars and 184.950 downloads on Packagist (latest version v2.0.0).
Install it with composer require danielme85/laravel-geoip2.
Discover more Laravel packages by danielme85
or browse all Laravel packages to compare alternatives.
Last updated
Laravel service provider and database downloader for MaxMind's GeoIP2 PHP API.
Requirements: PHP 8.3+, Laravel 13.x
MaxMind requires a free account to download GeoLite2 databases. Sign up at maxmind.com to get a license key.
composer require danielme85/laravel-geoip2
Add your license key to .env:
GEOIP2_LICENSE=YOUR_LICENSE_KEY
Publish the config file:
php artisan vendor:publish --provider="danielme85\Geoip2\Geoip2ServiceProvider"
config/geoip2.php:
return [
'downloadUrl' => 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&suffix=tar.gz',
'folder' => 'app/geoip2', // path inside storage/
'filename' => 'GeoLite2-City.mmdb',
'localhost' => '8.8.8.8', // fallback IP when running locally
'license' => env('GEOIP2_LICENSE', ''),
];
Download the database (~30 MB download, ~50 MB extracted):
php artisan geoip:download
Then use the Reader facade — the returned object is a GeoIp2\Database\Reader, so all MaxMind methods apply directly:
use danielme85\Geoip2\Facade\Reader;
$reader = Reader::connect();
$city = $reader->city('8.8.8.8');
echo $city->city->name; // "Mountain View"
echo $city->country->isoCode; // "US"
echo $city->location->latitude; // 37.386
echo $city->location->longitude; // -122.0838
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $request->ip();
try {
$geodata = Reader::connect()->city($ip)->jsonSerialize();
} catch (\GeoIp2\Exception\AddressNotFoundException $e) {
// IP not found in database
}
The downloaded .tar.gz archive is kept in storage/{folder}/tmp/. Running geoip:download again will prompt before fetching a new copy, so you can re-extract from the cached archive or force a fresh download.
This product includes GeoLite2 data created by MaxMind, available from maxmind.com.