29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / eZ Publish : Installations et mises à jour / eZ Publish : faire cohabiter une version 3.x (PHP4) et une version 4.x (PHP5)





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Publish : faire cohabiter une version 3.x (PHP4) et une version 4.x (PHP5)

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