Installer eAccelerator pour PHP 5.3 avec OSX

by Joris on septembre 4, 2009

Dans cet article, je vais vous décrire comment installer eAccelerator avec MacPorts. Pour cela, vous devez :

  1. Avoir un Mac ;
  2. Avoir une version récente de MacPorts installée ;
  3. Avoir installé la dernière built de PHP (PHP 5.3) avec la dernière built d’Apache (2.2.13).

Jusque là, tout va bien, enfin j’espère…
Qu’est-ce qu’eAccelerator et à quoi sert-il ?

Présentation rapide d’eAccelerator

eAccelerator (dérivé de Turck MMCache), comme son nom l’indique est un accélérateur et optimiseur de scripts PHP. Il permet de mettre en cache les scripts PHP compilés en mémoire vive ou dans un emplacement temporaire sur le disque dur. Ce projet Open Source existant depuis 2004 est le concurrent direct de Zend Optimizer.

Il permet entre autres de rendre l’exécution de vos scripts PHP (donc leur réponse) jusqu’à 10 fois plus vite que s’ils étaient exécutés et compilés pour la première fois. Ces fragments de code pré-compilés sont ce qu’on appelle opcode, sont mis en cache pour être exécutés plus rapidement par le processeur.

Pourquoi choisir eAccelerator alors que je suis pro-Zend ?

Parce que Zend Optimizer n’est pas encore compatible avec la version 5.3 de PHP et qu’eAccelerator apporte un certain nombre d’options de configuration que n’a apparemment pas Zend Optimizer. J’avoue que je ne m’y suis pas attardé mais en tout cas, je n’ai rien vu de bien passionnant dans le README de la dernière version de Zend Optimizer

Vous allez me dire qu’APC est également disponible pour la version 5.3 de PHP… De plus APC offre une bien plus grande panoplie d’options de configuration alors pourquoi eAccelerator ? Il n’y a pas de réponses à cette question. Si vous avez le courage et le temps de faire des tests avancés de performance, je vous en prie… eAccelerator me plaît bien, il est simple et performant.

Installation

Lancez-vous sur votre Terminal et tapez cette brève commande :

~% port installed

Ceci va afficher la liste de paquets déjà installés, vérifiez que vous avez ces 2 paquets au moins :

The following ports are currently installed:
  apache2 @2.2.13_2+darwin+darwin_9+preforkmpm (active)
  ...
  php5 @5.3.0_2+apache2+macosx+mysql5+pear+sqlite (active)

Déjà en installant ces 2 paquets, vous en aurez plein d’autres qui seront installés par dépendance.
Configurez et testez votre serveur Apache en affichant un phpinfo() dans votre localhost.

Ok, ça marche ?

Maintenant, lancez cette commande :

~% sudo port install php5-eaccelerator

Ceci va télécharger, décompresser, configurer, installer et déployer eAccelerator. Attention, il est très important de bien avoir installé/mis à jour PHP et Apache avant d’installer/mettre à jour eAccelerator !

Et oui, dans la précipitation de mettre à jour mes paquets, j’ai fait un ~% sudo port upgrade outdated et cela a installé la nouvelle version d’eAccelerator avant PHP et du coup, ça ne fonctionnait pas sans savoir pourquoi… eAccelerator a besoin de la configuration de PHP pour être correctement compilé.

Ok, ça fait souffler un peu la machine et hop, c’est installé, maintenant place à la configuration.

Configuration

Ouvrez le fichier php.ini dans /opt/local/etc/php5 et allez à la fin du fichier :

~% sudo vim /opt/local/etc/php5/php.ini

A la fin, ajoutez ceci :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[eAccelerator]
zend_extension="/opt/local/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
eaccelerator.log_file="/var/log/eaccelerator.log"
eaccelerator.cache_dir="/var/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.debug="0"
eaccelerator.optimizer="1"
eaccelerator.shm_size="0"
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_only="0"
eaccelerator.shm_prune_period="0"
eaccelerator.check_mtime="1"
eaccelerator.filter=""
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.keys="shm_and_disk"
eaccelerator.sessions="shm_and_disk"
eaccelerator.content="shm_and_disk"
eaccelerator.allowed_admin_path=""

Il se peut que le dossier dans lequel se trouve le fichier .so ne soit pas exactement le même selon votre version de PHP Extension. Mais la version 5.3.0 de PHP est livrée avec PHP Extension datant du 26 Juin 2009.

Le dossier /var/tmp/eaccelerator n’existe pas donc créez-le et appliquez-lui un chmod 0777 afin que PHP puisse écrire dedans. Toutes les directives de configuration sont détaillées sur cette page sauf la dernière qui est n’est pas à jour.

La dernière sert en fait à localiser le panneau de contrôle d’eAccelerator mais j’y reviens plus loin.

Tester son bon fonctionnement

Après sauvegarde du php.ini et redémarrage d’Apache, votre phpinfo() devrait s’enrichir un peu. Dans le dernier bloc avant les crédits PHP, vous devriez avoir ceci :

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
    with eAccelerator v0.9.6-rc1, Copyright (c) 2004-2007 eAccelerator, by eAccelerator

Ou alors en ligne de commande :

~% php -v
PHP 5.3.0 (cli) (built: Sep  3 2009 20:07:00) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
    with eAccelerator v0.9.6-rc1, Copyright (c) 2004-2007 eAccelerator, by eAccelerator

Si cela n’est pas le cas, regardez vos logs d’erreur PHP ou Apache si vous n’avez pas configuré vos logs PHP.

Mettre en place le panneau de contrôle

MacPorts ne prévoit pas que l’utilisateur voudrait installer son panneau de contrôle (ou alors j’ai pas bien cherché) donc il vous faudra pour cela télécharger manuellement le paquet eAccelerator afin d’y extraire le fichier désiré.
Rendez-vous sur le FTP d’eAccelerator en prenant soins de bien télécharger la même version précédemment installée.

Théoriquement, avec la configuration par défaut du serveur Apache, vous devriez avoir votre localhost qui se trouve dans /opt/local/apache2/htdocs.
Bref, où que soit votre localhost, vous devez extraire de l’archive le fichier control.php et le placer dans votre localhost.

Ensuite, configurez la directive eaccelerator.allowed_admin_path="/opt/local/apache2/htdocs" ou ailleurs… Redémarrez Apache et faites une requête sur http://localhost/control.php.

eAccelerator control panel

Et voila, vous avez installé eAccelerator. Vous pouvez vous amuser à faire un vhost spécialement pour lui genre http://eaccelerator/ pour pointer directement sur le panneau de contrôle…
Rien de bien compliqué n’est-ce pas ? Maintenant, faites-vous une joie de développer des outils avec vos nouvelles fonctions :)

4 comments

[...] alors est-ce un problème du framework ? Un soucis de cache d’Op-code sachant qu’APC et eAccelerator sont down [...]

by PHPUnit semble échouer une simple assertion « rand(0) - Joris Berthelot - eexit on 24/12/2009 at 04:12. #

Salut,
Il y a un ’5′ à mettre après le php.

sudo port install php5-eaccelerator

by Raldo CHEA on 05/07/2010 at 10:50. #

Oui, en effet… Les packages sont souvent mis à jour et depuis tous les derniers packets PHP commencent par php5-*.

Corrigé, merci ;)

by Joris on 05/07/2010 at 10:56. #

[...] Installer eAccelerator pour PHP 5.3 avec OSX [...]

by Two years of rand(0)-mies « rand(0) on 21/02/2011 at 16:25. #

Leave your comment

Not published