Prendre un Café

L'espace d'expression de Nicolas Perriault

Aller au contenu | Aller au menu | Aller à la recherche

mardi 2 juin 2009

Utiliser les fonctions GeoIP de PHP sous Ubuntu

Mon Dieu, les billets techniques refleuriraient-ils au printemps ? Si vous désirez récupérer des informations géographiques à partir de l’adresse IP (ou du hostname) d’un utilisateur, vous pouvez utiliser les fonctions fournies par l’extension PECL GeoIP.

Voici la procédure d’installation sur une Ubuntu 8.04:

$ sudo -s
# apt-get install build-essential php5-dev php5-cli libgeoip-dev libgeoip1 php-pear
# pecl install geoip

Si toiut s’est bien passé :

# echo "extension=geoip.so" >> /etc/php5/cli/php.ini

Si vous utilisez Apache comme serveur :

# echo "extension=geoip.so" >> /etc/php5/apache2/php.ini

Il faut également installer la base GeoIPCity de Maxmind :

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gunzip GeoLiteCity.dat.gz
# mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Vous pouvez maintenant tester l’extension avec une ligne du genre[1] :

$ echo "<?php var_dump(geoip_record_by_name('209.202.168.**'));"|php

Ça donne ici :

array(11) {  ["continent_code"]=>
  string(2) "NA"
  ["country_code"]=>
  string(2) "US"
  ["country_code3"]=>
  string(3) "USA"
  ["country_name"]=>
  string(13) "United States"
  ["region"]=>
  string(2) "NC"
  ["city"]=>
  string(4) "Cary"
  ["postal_code"]=>
  string(5) "27511"
  ["latitude"]=>
  float(35.7********)
  ["longitude"]=>
  float(-78.7*******)
  ["dma_code"]=>
  int(560)
  ["area_code"]=>
  int(919)
}

Enjoy.

Notes

[1] J’ai volontairement masqué certaines informations pour d’évidentes raisons de confidentialité.

mercredi 29 novembre 2006

Installer XDebug sur Ubuntu et l'utiliser avec Symfony

Si comme moi vous développez beaucoup avec Symfony [1] (ou avec PHP en général), les informations fournies par XDebug peuvent être très utiles. Pour installer XDebug 2.0RC1 sur une Ubuntu Edgy, voici la démarche à suivre :

$ sudo apt-get install php-pear php5-dev
$ sudo pecl install xdebug-beta

C'est dur hein ? Bon, il reste une petite manipulation : il faut activer l'extension dans votre (ou vos) fichier(s) php.ini. Par exemple chez moi, je rajoute cette ligne à la toute fin du fichier :

zend_extension="/usr/lib/php5/20051025/xdebug.so"

Et je relance Apache. Pour ceux qui connaissent la barre de débug en ligne de Symfony, vous allez voir du changement (avant / après)

Évidemment les perfs en prennent un coup, mais le jeu en vaut la chandelle quand on cherche le vilain dysfonctionnement volatile.

Merci XDebug, merci Symfony !

Edit : Ajout du paquet php_pear contenant pecl, merci Mat.

Notes

[1] Qui vient tout juste de sortir en 1.0 beta 1 !

mercredi 1 novembre 2006

Installer l'accélerateur APC pour PHP5 sur Ubuntu

APC est un accélérateur PHP qui permet d'optimiser les performances de vos applications PHP. Voyons comment l'installer sur un serveur Ubuntu Dapper Drake 6.06 LTS avec Apache2 et PHP5 :

$ sudo apt-get update
$ sudo apt-get install build-essential php5-dev php-pear apache2-prefork-dev

On va utiliser l'utilitaire de gestion de modules d'Apache2, apxs2. APC va chercher par défaut la version Apache1, donc on fait un lien symbolique :

$ sudo ln -s /usr/bin/apxs2 /usr/bin/apxs

Cette installation nécessite une importante quantité de mémoire vive allouée à PHP, aussi nous allons devoir augmenter cette valeur au sein du script de commande PEAR en modifiant le fichier /usr/share/php/pearcmd.php et en y ajoutant en tête de fichier la ligne :

<?php
ini_set('memory_limit','24M');

Tout est prêt, on peut lancer l'installation d'APC via PECL :

$ sudo pecl install apc

Répondez oui à toutes les questions posées. Ceci fait et si l'installation s'est déroulée convenablement, éditez votre fichier /etc/php5/apache2/php.ini :

extension=apc.so

Il ne reste plus qu'à redémarrer Apache2 pour profiter d'une substantielle amélioration des performances de vos applications PHP5 :-)