Magazine High tech

Installer GeoIP pour PHP sous Ubuntu

Publié le 05 mai 2009 par Ekevin

GeoIP est un service de MaxMind destiné à récupérer des informations (pays, ville,…) à partir d’une IP. Il existe 3 manières de bénéficier de ce service (en pure PHP, grâce à une extension pour PHP et une pour Apache).

Celle qui nous intéresse ici est l’extension pour PHP. Il est conseillé sur le site de passer par PECL, malheureusement sous Ubuntu nous avons une erreur de ce type :

checking for geoip files in default path... not found
configure: error: Please reinstall the geoip distribution
ERROR: `/tmp/pear/temp/geoip/configure' failed

Le plus simple est alors de passer par les dépôts. Si vous êtes sous Mac ou sous une autre distribution de Linux cherchez GeoIP et le nom de votre distribution, en général ce sujet à été largement couvert. Enfin pour les plus courageux, vous pouvez compiler le package.

apt-get install php5-geoip

Par défaut, une base de données est installée sur votre machine dans le répertoire /usr/share/GeoIP. Pour bénéficier de la localisation par ville (en version lite) et des informations sur l’ASP.

Il vous faut récupérer ces deux archives et les décompresser dans le réperoire /usr/share/GeoIP :

  • GeoLiteCity
  • GeoIPASPNum

En ce qui concerne GeoLiteCity.dat renommer ce fichier en GeoIPCity.dat, sinon l’extension GeoIP ne le prendra pas en compte.

Enfin, étant donné que la liste des pays n’est pas à jour, vous pouvez télécharger la base contenant les pays et écraser l’ancienne : http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

Pour terminer voici un lien vers la doc php : http://uk.php.net/manual/fr/book.geoip.php
Ainsi qu’un exemple d’utilisation avec le shell interactif

$ php -a
Interactive shell

php > $record = geoip_record_by_name('www.example.com');
php > var_dump($record);
array(10) {
  ["country_code"]=>
  string(2) "US"
  ["country_code3"]=>
  string(3) "USA"
  ["country_name"]=>
  string(13) "United States"
  ["region"]=>
  string(2) "CA"
  ["city"]=>
  string(13) "Beverly Hills"
  ["postal_code"]=>
  string(5) "90210"
  ["latitude"]=>
  float(34.0994987488)
  ["longitude"]=>
  float(-118.414299011)
  ["dma_code"]=>
  int(803)
  ["area_code"]=>
  int(310)
}

Retour à La Une de Logo Paperblog

A propos de l’auteur


Ekevin 5 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte