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
Ip2Location Php

Ip2Location Php Laravel Package

ip2location/ip2location-php

IP2Location PHP library for looking up IP addresses: country, region, city, coordinates, ZIP, ISP, domain, connection type, and more via BIN databases or the web service. Supports IPv4/IPv6 and works standalone or with Laravel.

View on GitHub
Deep Wiki
Context7

[Official Release] IP2Location PHP API to get location info from IPv4 and IPv6 address.

Frequently asked questions about Ip2Location Php
How do I install ip2location/ip2location-php in a Laravel application?
Run composer require ip2location/ip2location-php and commit the resulting composer.lock so the exact patch is pinned. The package is framework-agnostic, so you add a small service provider that binds new IP2Location($dbPath) as a container singleton, ideally behind your own interface. Keep the BIN file path and the list of fields you actually read in a config file, and inject the bound instance wherever lookups are needed.
Does ip2location/ip2location-php require a PECL extension or a custom PHP build?
No. It is a pure-PHP binary reader for IP2Location BIN files, so it runs on stock Laravel Forge, Laravel Cloud, Vapor, or shared hosting images without touching the PHP build. The only runtime requirement is that the PHP process can read the .BIN file path you give the constructor.
Which IP2Location BIN database edition should I use for country, city, or ISP lookups?
Match the edition to the fields you pass into lookup(): DB1 covers country-only localization at the smallest file size, while city-level data such as region, city, ZIP, coordinates, and time zone needs a larger edition. ISP, domain, ASN, and connection-type fields come from the ISP-oriented editions, and proxy or VPN detection requires the separate PX database. The free LITE database works for prototyping but is materially less accurate than the commercial tiers.
Does ip2location/ip2location-php support IPv6 addresses?
Yes. The lookup method accepts both IPv4 and IPv6 address strings, and the current BIN database editions include IPv6 ranges. Private, reserved, and loopback addresses have no meaningful geolocation record, so short-circuit RFC1918 and similar ranges in your own code before calling the library.
Should I use the local BIN database or the IP2Location web service in Laravel?
For a typical Laravel application the local BIN file is the correct default: there is no egress, no per-request quota, and no third-party latency on the hot path. The web service mode is useful when you cannot ship a large data file, such as short-lived serverless functions, or for very low-volume lookups where an API key and per-query cost are acceptable.
Which version of ip2location/ip2location-php should I require in composer.json?
Require ^9.8.1 and pin the exact patch in composer.lock. Release 9.8.1 fixes an unpack casting defect in the BIN parser on PHP 8, which is the code path every local-mode lookup depends on, and earlier releases could return malformed or mis-typed field values instead of throwing. On PHP 8.1 and above, anything below 9.8.1 is a silent correctness risk rather than a style preference.
How much memory does a local IP2Location BIN file use per PHP-FPM worker or Octane process?
Commercial city and ISP databases are tens of megabytes up to around 100 MB or more, and each PHP-FPM worker or Octane process holds its own copy, so twenty workers times a 60 MB file is a real capacity line item. This is the biggest scaling constraint of local-mode lookups. Mitigate with a country-only edition, fewer or smaller workers, an application cache in front of the lookups, or a dedicated sidecar service.
How do I update the IP2Location BIN database in production without downtime?
Write the new file to a temporary path, verify its checksum, then rename it over the old one so the swap is atomic. Long-lived workers and Octane processes can keep serving the previous inode after a rename, so follow the swap with a reload or restart before you claim the data is live. A scheduled artisan command is a clean way to run the monthly refresh instead of bespoke ops scripts.
Is the IP2Location BIN database free for commercial use?
The PHP package itself is MIT licensed, but the data files are licensed separately. The LITE database is free with an attribution requirement and lower accuracy, while commercial editions are annual subscriptions scoped to a server or application. Confirm whether autoscaled or ephemeral instances count as separate servers, and get legal review before production rather than after.
How accurate is IP2Location data and how should I test it in Laravel?
IP geolocation is inherently imprecise at ISP and VPN boundaries, and LITE-tier city results are noticeably weaker than the commercial editions, so validate against a sample of your own traffic before promising to show a user their city. For regression safety, add fixture-based PHPUnit tests that assert known IPs return the expected country, region, and city. Those tests also catch parser or data-file problems that would otherwise surface silently as wrong enrichment values.
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.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect