PHP, GD et JPEG …

Voici une petite histoire qui peut arriver à n'importe qui (sisi !) : un jour, vous compilez PHP avec le support GD, sans autre option. Puis, plus tard, vous avez besoin du support JPEG pour GD. Vous retournez donc fièrement voir vos sources et recompilez joyeusement PHP avec GD et le support JPEG … et là : PAF ! Pas d'erreurs à la compilation, tout se passe bien, sauf que votre phpinfo() persiste à vous dire que, bah non, le support JPEG n'est pas activé !

Voici donc la marche à suivre pour que votre phpinfo() vous donne raison :

  • déjà, on installe le paquet libjpeg62-dev, indispensable pour la compilation de PHP :

$ apt-get install libjpeg62-dev

  • ensuite, on s'assure qu'il existe un fichier libjpeg.so quelque part et on note le nom de son répertoire (ici, /usr/lib) :

$ find / -name "libjpeg.so"
/usr/lib/libjpeg.so

  • s'il n'existe pas, il faut chercher un fichier libjpeg.so.62.0.0 puis créer un lien symbolique :

$ find / -name "libjpeg.so.62.0.0"
/usr/lib/libjpeg.so.62.0.0
$ ln -s /usr/lib/libjpeg.so.62.0.0 /usr/lib/libjpeg.so

  • puis; dans le répertoire des sources de PHP, on purge les compilations précédentes :

$ cd /usr/local/src/php-5.2.13
$ make clean

  • on peut maintenant recompiler avec les bonnes options, dont l'emplacement du fichier libjpeg.so :

$ ./configure <les options de compilation précédentes> --with-gd --with-jpeg-dir=/usr/lib
$ make
$ make install

  • et voilà ! Le support JPEG pour GD est maintenant activé et fonctionnel. Ce peut être vérifié en créant un fichier phpinfo.php avec ce contenu :
<?php
phpinfo();
?>
  • on s'aperçoit alors que, dans la section GD, apparait bien la ligne : JPG Support enabled