Installer des extensions PECL avec XAMPP pour Mac OS X

Travaillant actuellement à la version internationale du site d'un client, je me suis trouvé face à l'obligation d'installer une extension PECL, en l'occurrence pecl_http, sur ce brave Macintosh avec XAMPP. Comme j'ai un poil galéré pour y parvenir, je me suis dit que ça méritait bien un petit billet.

La version de XAMPP que j'utilise est celle qui contient PHP en version 5.3.0, je vous laisse le soin d'adapter si vous avez une version différente. De même, mon Mac tourne avec Snow Leopard (10.6), il faut donc avoir également les outils de développement fournis par Apple. Mais bon, tout le monde à installé ça, non ?

Comme, XAMPP ne contient pas les fichiers de développement de PHP, il faut donc tout d'abord aller récupérer les sources de PHP correspondant à la version utilisée par XAMPP, dans mon cas la 5.3.0 donc.

L'installation s'attend à trouver ces sources dans /Applications/XAMPP/xamppfiles/include/php/php-5.3.0/php/, le plus simple est donc de copier les sources de PHP dans /Applications/XAMPP/xamppfiles/include/php/php-5.3.0/ en créant les répertoires manquants qui n'existent pas dans la distribution de XAMPP:

  • /Applications/XAMPP/xamppfiles/include/
  • /Applications/XAMPP/xamppfiles/include/php/
  • /Applications/XAMPP/xamppfiles/include/php/php-5.3.0/

(je sais, c'est pas super élégant, mais j'avais pas trop de temps pour réfléchir)

Au cas où vous n'auriez pas effectué les étapes précédentes en ligne de commande, il est temps de lancer le terminal...

cd  /Applications/XAMPP/xamppfiles/include/php/php-5.3.0/php/
./configure

Cette opération permet simplement de générer les fichiers idoines pour l'architecture, inutile de compiler PHP :-)

À ce stade, on pourrait espérer que l'installation via pecl puisse se faire normalement, mais non, ce serait trop simple, donc... je place ici les instructions utilisées pour pecl_http, je vous laisse là encore adapter à vos besoins

cd /tmp
pecl download pecl_http
tar -xzf pecl_http-1.7.0.tgz
cd pecl_http-1.7.0
/Applications/XAMPP/xamppfiles/bin/phpize
MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS='-O3 -fno-common -arch i386 -arch x86_64' LDFLAGS='-O3 -arch i386 -arch x86_64' CXXFLAGS='-O3 -fno-common -arch i386 -arch x86_64' ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config-5.3.0
make sudo make install

Voilà, en principe tout a du bien se passer, il reste à modifier le fichier php.ini pour y ajouter (ou décommenter), dans la liste des extensions, la ligne:

extension="http.so"

Et bien sûr redémarrer Apache.

Happy scripting :-)