Date de publication: le mercredi 2 avril 2008 à 06h00
Dernière modification: par Pascal BOYER le mardi 14 septembre 2010 à 23h17
Le présent article explique comment faire tourner, sur un même serveur et avec un unique serveur Apache 2, deux installations eZ Publish:
- l'une fonctionnant avec PHP4 (toutes les versions antérieures à eZ Publish 4.0)
- l'autre fonctionnant avec PHP5 (toutes les versions postérieures ou égales à eZ Publish 4.0
L'enjeu consiste donc à installer les versions 4 et 5 de PHP puis de configurer le système afin que chaque version de eZ Publish soit exécutée par la bonne version de PHP.
Voir ce lien:
http://www.durcommefaire.net/2006/06/14/567-installer-php-4-et-php-5-sur-une-meme-machine
PHP4 en mode module et PHP5 en mode CGI
La méthode présentée ci-dessous repose sur le principe suivant:
- fonctionnement de PHP4 en mode module de Apache2
- fonctionnement de PHP5 en mode de Apache CGI
Packages à installer
dpkg -l |grep php
ii libapache2-mod-php4 4.4.4-9+lenny1 server-side, HTML-embedded scripting languag ii php-pear 5.2.5-3 PEAR - PHP Extension and Application Reposit ii php4 4.4.2-1.1 server-side, HTML-embedded scripting languag ii php4-cgi 4.4.4-9+lenny1 server-side, HTML-embedded scripting languag ii php4-cli 4.4.4-9+lenny1 command-line interpreter for the php4 script ii php4-common 4.4.4-9+lenny1 Common files for packages built from the php ii php4-domxml 4.4.4-9+lenny1 XMLv2 module for php4 ii php4-gd 4.4.4-9+lenny1 GD module for php4 ii php4-imap 4.4.4-9+lenny1 IMAP module for php4 ii php4-mcal 4.4.4-9+lenny1 MCAL calendar module for php4 ii php4-mcrypt 4.4.4-9+lenny1 MCrypt module for php4 ii php4-mhash 4.4.4-9+lenny1 MHASH module for php4 ii php4-mysql 4.4.4-9+lenny1 MySQL module for php4 ii php4-xslt 4.4.4-9+lenny1 XSLT module for php4 ii php5-cgi 5.2.5-3 server-side, HTML-embedded scripting languag ii php5-cli 5.2.5-3 command-line interpreter for the php5 script ii php5-common 5.2.5-3 Common files for packages built from the php ii php5-gd 5.2.5-3 GD module for php5 ii php5-imagick 2.1.0RC1-1 ImageMagick module for php5 ii php5-imap 5.2.5-3 IMAP module for php5 ii php5-mcrypt 5.2.5-3 MCrypt module for php5 ii php5-memcache 3.0.0-1 memcache extension module for PHP5 ii php5-mhash 5.2.5-3 MHASH module for php5 ii php5-mysql 5.2.5-3 MySQL module for php5 ii php5-xcache 1.2.2-1 Fast, stable PHP opcode cacher
dpkg -l |grep image
ii imagemagick 6.2.4.5-0.8 Image manipulation programs
dpkg -l |grep apache
ii apache2-mpm-prefork 2.2.8-1 Traditional model for Apache HTTPD ii apache2-utils 2.2.8-1 utility programs for webservers ii apache2.2-common 2.2.8-1 Next generation, scalable, extendable web se ii libapache2-mod-apreq2 2.08-5 generic Apache request library - Apache modu ii libapache2-mod-fcgid 2.2-1 an alternative module compat with mod_fastcg ii libapache2-mod-perl2 2.0.3-4 Integration of perl with the Apache2 web ser ii libapache2-mod-php4 4.4.4-9+lenny1 server-side, HTML-embedded scripting languag ii libapache2-request-perl 2.08-5 generic Apache request library - Perl module
:
Ci-dessus, l'avant dernière ligne indique que PHP4 est installé et exécuté en tant que module de Apache 2. C'est donc PHP5 qui sera installé et exécuté en mode CGI
eZ Publish et le mode VitualHost
Si votre installation de eZ Publish est configurée en mode VirtualHost alors vous devez ajouter ces quelques lignes à l'intérieur de la section <VirtualHost>:
<IfModule mod_alias.c> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin/"> Options ExecCGI -MultiViews +SymLinksIfOwnerMatch AllowOverride None Order allow,deny Allow from all </Directory> </IfModule>
- La directive ScriptAlias doit pointer vers un emplacement sûr (et en dehors de l'espace web, c'est à dire en dehors de l'espace définit par DocumentRoot) contenant les scripts à exécuter.
Le répertoire /usr/lib/cgi-bin/ contient les scripts php4 et/ou php5 installés par les packages php4-cgi ou php5-cgi.
Le fichier .htaccess
A la racine du répertoire d'installation de eZ Publish, créez un fichier .htaccess contenant ces lignes:
AddHandler x-httpd-php5 .php Action x-httpd-php5 /cgi-bin/php5
Si vous souhaitez exécuter PHP4, et non PHP5, en mode CGI, remplacez les lignes ci-dessus par celles-ci:
AddHandler x-httpd-php4 .php Action x-httpd-php4 /cgi-bin/php4
- AddHandler nomDuHandler extension1 extension2 extension3 etc...
Extrait tiré de « Orreilly - Apache, La référence : 3ème édition en français»:
Un handler est un morceau de code intégré à Apache qui effectue certaines actions lorsqu'un fichier ayant un type MIME ou handler particulier est appelé. Apache possède un certain nombre de handlers intégrés et l'on peut en ajouter de nouveaux à l'aide de la commande Action.
AddHandler fait correspondre les extensions de noms de fichiers indiqués au handler nomDuHandler.
Dans ces lignes, /cgi-bin/ vaut /usr/lib/cgi-bin/ puisqu'ainsi défini par la directive ScriptAlias.
- Action typeMIME script_cgi
Extrait tiré de « Orreilly - Apache, La référence : 3ème édition en français»:
Les Actions passent des fichiers à un script CGI précis. En clair, le script CGI script_cgi est appliqué aux fichiers ayant le type MIME indiqué à chaque fois qu'ils sont demandés.
Donc notre cas, on demande à Apache d'exécuter le script php5 (ou php4)pour chaque fichier .php demandé.
Messages d'erreur
Si ce message d'erreur s'affiche:
« Parse error : syntax error, unexpected ',', expecting '(' in /usr/local/www/ezp4/index.php on line 121»
c'est que le fichier .htaccess est absent.
Si vous obtenez, lors de la phase d'installation de eZ Publish 4, le message suivant:
« Strict Standards : strtotime() [ function.strtotime ]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /usr/local/www/ezp4/lib/ezfile/classes/ezlog.php on line 127»
alors vous devez configurer le fichier /etc/php5/cgi/ php.ini et y mettre ceci:
date.timezone = Europe/Paris
A propos de ce paramètre, repportez-vous à l'article: Prérequis à une installation normale de eZ Publish 4.0
Une fois le fichier php.ini modifié, relancez Apache:
/etc/init.d/apache2 force-reload
Toujours dans ce fichier php.ini, vous devez configurer les paramètre suivants:
magic_quotes_gpc = 0 magic_quotes_runtime = 0 max_execution_time = 300
Pensez à relancer le serveur web chaque fois que vous modifiez le fichier de configuration de PHP.
Poursuivez l'installation de la version 4.0.0 partir de la lecture de ce fichier: Prérequis à une installation normale de eZ Publish 4.0
Commentaires














