Installer une extension PHP sous Windows

Sur Windows, vous avez deux moyens de charger une extension PHP : soit vous la compilez dans PHP, soit vous chargez une DLL. Charger une extension pr�compil�e est la m�thode la plus pratique et la plus recommand�e.

Pour charger une extension, vous devez disposer de son fichier ".dll" sur votre syst�me. Toutes les extensions sont automatiquement et p�riodiquement compil�e par le groupe PHP (voyez la section de t�l�chargements).

Pour compiler une extension dans PHP, reportez-vous � la documentation sur la compilation des sources.

Pour compiler une extension autonome, (c'est-�-dire un fichier DLL), reportez-vous documentation sur la compilation des sources. Si le fichier DLL est absent de votre distribution PHP et de PECL, il vous faudra la compiler avant de pouvoir l'utiliser.

O� trouver une extension ?

Les extensions PHP sont g�n�ralement appel�es "php_*.dll" (o� les ast�risques repr�sentent le nom de l'extension) et elles sont rang�es dans le dossier "PHP\ext" ("PHP\extensions" en PHP4).

PHP est livr� avec les extensions qui sont les plus utiles � la majorit� des utilisateurs. Elles sont appel�es des extensions coeur, ou "core".

Cependant, si vous avez besoins de fonctionnalit�s qui ne sont pas fournies par une extension coeur, vous pourriez quand m�me les trouver dans PECL. Le PHP Extension Community Library (PECL, aussi dit Biblioth�que d'Extensions Communautaires de PHP) est un d�p�t de code pour les extensions PHP, qui fournit un annuaire de toutes les extensions connues, et un service d'h�bergement pour t�l�charger et d�velopper ces extensions.

Si vous avez d�velopp� une extension pour votre propre usage, vous pourriez avoir envie de l'h�berger sur PECL, pour que tous ceux qui ont eu le m�me probl�me que vous, puissent avoir acc�s � la m�me solution. Cela vous donne de bonnes chances d'avoir des retours de la communaut�, et, peut-�tre, des remerciements, des rapports de bugs, et m�me des correctifs. Avant que vous n'envoyez votre extension sur les serveurs PECL, il est recommand� de lire http://pecl.php.net/package-new.php.

Quelles extensions t�l�charger ?

Souvent, vous trouverez plusieurs versions de chaque DLL :

  • Diff�rents num�ros de versions (au moins, les deux premiers chiffres doivent �tre les m�mes)
  • Diff�rentes configurations de s�curit� de threads
  • Diff�rentes architectures de processeurs (x86, x64...)
  • Diff�rentes configurations de d�bogage
  • etc.

Il est recommand� de choisir les extensions pour qu'elles soient adapt�es � la machine serveur sur laquelle vous utilisez PHP. Le script suivant va vous afficher toutes vos configurations PHP :

Exemple #1 Appel de la fonction phpinfo()

<?php
phpinfo
();
?>

Ou bien, en ligne de commande :

drive:\\path\to\php\executable\php.exe -i

Charger une extension

Le moyen le plus courant pour charger une extension PHP est de l'inclure dans votre fichier de configuration php.ini. Notez que de nombreuses extensions sont d�j� pr�sentes dans le fichier php.ini et que vous avez simplement � supprimer le point-virgule pour les activer.

;extension=php_extname.dll
extension=php_extname.dll

Cependant, certains serveurs Web sont d�routants, car ils n'utilisent pas le fichier php.ini rang� avec votre ex�cutable PHP. Pour en savoir plus sur votre v�ritable php.ini, recherchez son dossier dans le fichier phpinfo():

Configuration File (php.ini) Path   C:\WINDOWS
Loaded Configuration File   C:\Program Files\PHP\5.2\php.ini

Apr�s activation d'une extension, sauvegardez le fichier php.ini, et relancez le serveur Web, puis v�rifiez � nouveau le fichier phpinfo(). La nouvelle extension devrait y avoir sa section.

R�solution de probl�mes

Si l'extension n'appara�t pas dans le fichier phpinfo(), vous devriez jeter un oeil dans les logs pour savoir d'o� vient le probl�me.

Si vous utilisez PHP en ligne de commande (CLI), l'erreur de chargement de l'extension devrait �tre lisible directement sur l'�cran.

Si vous utilisez PHP sur un serveur Web, la position et le format des logs varient grandement d'un serveur � l'autre. Lisez la documentation de votre serveur Web pour savoir o� ils sont : PHP ne peut pas vous aider pour cela.

Les probl�mes les plus courants sont la localisation du fichier DLL, la valeur de la directive "extension_dir" dans le php.ini et les incoh�rences de compilations.

Si le probl�me est une incoh�rence de compilation, vous avez probablement t�l�charg� une mauvaise DLL. Essayez d'en charger une nouvelle, avec les bonnes configurations pour votre serveur. phpinfo() vous sera alors tr�s utile.