Yann "Bug" Dubois

Développeur WordPress freelance à Paris
Flux RSS

Mise à jour d’eAccelerator : recompilation pour une nouvelle version de PHP

6 September 2010 Par : Yann Dubois Catégorie : Français, tech

Dans ma série d’articles sur l’optimisation et l’accélération de WordPress, j’ai souligné les gains de performance obtenus en installant le compilateur d’opcode eAccelerator. Par ailleurs, dans mon tutoriel résumant la configuration rapide d’un serveur LAMP type OVH/Kimsufi, j’ai détaillé l’installation d’eAccelerator. Sur une installation régulièrement mise à jour de GNU/Linux (Debian par exemple), il faut recompiler le moduile eAccelerator avec chaque mise à jour du PHP. Voici un guide détaillé pas-à-pas sur cette procédure.

Comment savoir que eAccelerator n’est plus à jour ?

Dès que la version compilée du module eAccelerator ne correspond plus à votre environnement, votre fichier d’erreurs Apache2 va contenir des messages de mise en garde. Pour vérifier, vous pouvez redémarrer apache :

sudo /etc/init.d/apache2 restart

Puis regarder la fin de votre fichier de log d’erreur Apache :

tail /var/log/apache2/error.log

Si vous voyez des messages de ce type :

[eAccelerator] This build of “eAccelerator” was compiled for PHP version 5.2.6-1+lenny8. Rebuild it for your PHP version (5.2.6-1+lenny9) or download precompiled binaries.

…c’est que eAccelerator ne se lance plus au démarrage d’Apache (ce qui peut par ailleurs causer une élévation de la charge sur votre serveur et tous les désagréments qui s’y adjoignent tels que saturations de la mémoire, plantages intempestifs du serveur, ralentissement des performances, etc. : dans les faits, vous ne bénéficiez plus du cache d’opcode, et le PHP doit donc à nouveau interpréter puis compiler un à un tous vos scripts à chaque appel de page !)

Mise à jour de GNU/Linux

Dans un premier temps, il faut toujours s’assurer que l’ensemble de la configuration est à jour, afin notamment de bénéficier de la dernière version stable de PHP mais aussi des fichiers de headers (packages .devel) nécessaires à la compilation. Voici la suite d’instruction a éxécuter avec des droits root (d’où l’utilisation systématique de sudo, car je pars du principe que vous n’êtes pas connecté à votre serveur en root !)

sudo aptitude update
sudo aptitude safe-upgrade
sudo aptitude full-upgrade

Récupération de la dernière version des bibliothèques eAccelerator

Rendez-vous sur le site de téléchargement des sources de eAccelerator pour vérifier si une nouvelle version est disponible :

http://bart.eaccelerator.net/source/

Si une version plus récente que celle que vous utilisez est disponible, téléchargez là depuis la ligne de commande. Par exemple :

cd
wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
(Vous n’avez pas besoin d’être en root pour télécharger et décompacter eAccelerator, ni en principe pour le compiler. Vous pouvez faire tout cela dans le répertoire de votre utilisateur).

Configurez, re-compilez et installez eAccelerator

Voici un résumé de la marche à suivre :
  • Décompactez l’archive contenant le code source
tar -jxvf eaccelerator-0.9.6.1.tar.bz2
  • Déplacez-vous dans le dossier contenant les sources
cd eaccelerator-0.9.6.1/
  • Préparez l’environnement de compilation d’extension PHP avec phpize
phpize
  • Nettoyez l’arborescence de compilation
make clean
  • Lancez l’utilitaire de configuration
./configure -enable-eaccelerator=shared
  • Lancez la compilation
make
  • Faites l’installation (vous devez être root)
sudo make install
  • Lancez le test
make test
  • Relancez Apache
sudo /etc/init.d/apache2 restart

Vérifiez que tout fonctionne

Connectez-vous à vos sites avec votre navigateur web pour vérifier que le php fonctionne correctement. Vérifiez aussi dans votre log d’erreur Apache que le message d’erreur “This build of “eAccelerator” was compiled for PHP version … Rebuild it for your PHP version … or download precompiled binaries.” n’apparaît plus.

A lire également...

WordPress › Error

There has been a critical error on your website.

Learn more about debugging in WordPress.