Date de publication: le jeudi 2 août 2007 à 23h11
Dernière modification: par Pascal BOYER le mardi 7 août 2007 à 21h46
« Article précédent: eZ Publish : Mettre à jour un site mutualisé -- 2
Cet article récapitule, toujours au travers de l'exemple réel du site entre-lac-et-montagne.com , les différentes étapes de la procédure de mise à jour décrite par le document eZ Publish : mettre à jour de 3.8.x vers 3.9.0
Vous trouverez donc ci-dessous l'ensemble des commandes à exécuter ainsi que les sorties qu'elles renvoient, des messages d'erreur que l'on peut rencontrer et la solution à apporter.
:
En aucun cas ce document dispense de la lecture de l'article
eZ Publish : mettre à jour de 3.8.x vers 3.9.0
Répertoire temporaire
On crée un répertoire temporaire à la racine du serveur Apache:
mkdir ezp390
On désarchive dedans la version 3.9.0
bunzip ezpublish-3.9.0-gpl.tar.bz2
tar xfv ezpublish-3.9.0-gpl.tar -C /usr/local/www/ezp390/
Si besoin, on modifie le propriétaire et le groupe pour préserver l'accès du serveur au répertoire:
chown -R www-data:www-data ezp390
Problème avec le script correctxmltext.php
Comme l'indique la doc eZ Publish : mettre à jour de 3.8.x vers 3.9.0 , il faut modifier le script
update/common/scripts/3.9/correctxmltext.php
...dont la ligne 309:
$doc =& $xml->domTree( $text, array( "TrimWhiteSpace" => false ) );
...doit être remplacée par ceci:
$doc =& $xml->domTree( $text, array( "TrimWhiteSpace" => false, "SetParentNode" => true ) );
Les répertoires de la version 3.8
A présent, il faut copier, dans le répertoire temporaire, les répertoires de la version 3.8.x contenant des fichiers spécifiques.
Les design
Par défaut, la version 3.9.0 ne contient que ces 3 designs:
ls -la ezp390/design/
total 20 drwxrwxr-x 5 www-data www-data 4096 2006-12-18 20:36 . drwxr-sr-x 19 www-data www-data 4096 2007-08-02 22:02 .. drwxrwxr-x 6 www-data www-data 4096 2006-12-18 20:36 admin drwxrwxr-x 6 www-data www-data 4096 2006-12-18 20:36 base drwxrwxr-x 7 www-data www-data 4096 2006-12-18 20:36 standard
Donc il suffit de copier les designs suivants:
ls -la rep_tempo/design/
total 28 drwxrwxrwx 7 www-data www-data 4096 2007-01-30 18:11 . drwxrwx--- 20 www-data www-data 4096 2007-08-01 13:50 .. drwxrwxrwx 6 www-data www-data 4096 2007-01-29 13:13 admin drwxr-xr-x 6 www-data www-data 4096 2007-01-30 18:13 admin_bis <==== Lui !! drwxrwxrwx 6 www-data www-data 4096 2007-01-29 13:13 base drwxrwxrwx 9 www-data www-data 4096 2007-06-07 17:50 plain_site <==== Lui !! drwxrwxrwx 7 www-data www-data 4096 2007-01-29 13:13 standard
Les icônes
Comme je modifie régulièrement le fichier:
share/icons/crystal-admin/icon.ini
...je n'oublie pas de le copier:
Les siteaccess
Par défaut voici ce qui est présent dans la version 3.9.0
ls -la ezp390/settings/siteaccess/
total 16 drwxrwxr-x 4 www-data www-data 4096 2006-12-18 20:37 . drwxrwxr-x 4 www-data www-data 4096 2006-12-18 20:42 .. drwxrwxr-x 2 www-data www-data 4096 2006-12-18 20:44 admin drwxrwxr-x 2 www-data www-data 4096 2006-12-18 20:37 setup
Donc on copie ceci:
ls -la rep_tempo/settings/siteaccess/
total 20 drwxrwxrwx 5 www-data www-data 4096 2007-05-28 15:18 . drwxrwxrwx 4 www-data www-data 4096 2007-01-29 13:13 .. drwxrwxrwx 2 www-data www-data 4096 2007-08-01 20:23 accueil_paysan <=== Lui !! drwxrwxrwx 2 www-data www-data 4096 2007-08-01 20:22 plain_admin <=== Lui !! drwxrwxrwx 2 www-data www-data 4096 2007-01-29 13:16 setup
Surcharge générale
Par défaut, le répertoire de surcharges générales est vide:
ls -la ezp390/settings/override/
total 8 drwxrwxr-x 2 www-data www-data 4096 2006-12-18 20:42 . drwxrwxr-x 4 www-data www-data 4096 2006-12-18 20:42 ..
Donc on peut tout copier:
ls -la rep_tempo/settings/override/
total 24 drwxrwxrwx 2 www-data www-data 4096 2007-08-02 20:52 . drwxrwxrwx 4 www-data www-data 4096 2007-01-29 13:13 .. -rw-rw-rw- 1 www-data www-data 77 2007-01-30 15:51 i18n.ini.append.php -rw-rw-rw- 1 www-data www-data 73 2007-01-30 15:51 image.ini.append.php -rw-rw-rw- 1 www-data www-data 424 2007-08-01 20:34 site.ini.append.php
Extensions
Par défaut voici les extensions présentes dans la version 3.9.0:
ls -la ezp390/extension/
total 20 drwxrwxr-x 5 www-data www-data 4096 2006-12-18 20:43 . drwxr-sr-x 19 www-data www-data 4096 2007-08-02 22:02 .. drwxrwxr-x 9 www-data www-data 4096 2006-12-18 20:44 ezdhtml drwxrwxr-x 10 www-data www-data 4096 2006-12-18 20:44 ezodf drwxrwxr-x 5 www-data www-data 4096 2006-12-18 20:44 ezpaypal
Donc je ne copie que celle-ci:
ls -la rep_tempo/extension/
total 20 drwxrwxrwx 5 www-data www-data 4096 2007-05-28 15:34 . drwxrwx--- 20 www-data www-data 4096 2007-08-01 13:50 .. drwxrwxrwx 9 www-data www-data 4096 2007-01-29 13:14 ezdhtml drwxrwxrwx 5 www-data www-data 4096 2007-01-29 13:13 ezpaypal drwxr-xr-x 6 www-data www-data 4096 2007-05-28 14:29 googlesitemaps <=== Lui !!
Le répertoire var/
Par défaut, le répertoire var/ de la version 3.9.0 est presque vide:
ls -la ezp390/var/
total 16 drwxrwxr-x 4 www-data www-data 4096 2006-12-18 20:42 . drwxr-sr-x 19 www-data www-data 4096 2007-08-02 22:02 .. drwxrwxr-x 2 www-data www-data 4096 2006-12-18 20:42 cache drwxrwxr-x 3 www-data www-data 4096 2006-12-18 20:43 storage
Je copie donc tout cela:
ls -la rep_tempo/var/
total 24 drwxrwxrwx 6 www-data www-data 4096 2007-03-16 21:30 . drwxrwx--- 20 www-data www-data 4096 2007-08-01 13:50 .. drwxrwxrwx 2 www-data www-data 4096 2007-08-02 21:41 cache drwxrwxr-x 2 www-data www-data 4096 2007-07-24 09:37 log <=== Lui !! drwxrwxr-x 5 www-data www-data 4096 2007-02-01 14:35 plain_site <=== Lui !! drwxrwxrwx 3 www-data www-data 4096 2007-01-30 15:43 storage <=== Lui !!
.htaccess
Penser éventuellement à ce fichier
Mise à jour de la base de données
Modification du fichier dbupdate-3.8.0-to-3.9.0.sql
Comme indiqué dans la doc officielle, et puisque je met à jour une version 3.8.6, je dois supprimer les deux parties de ce fichier qui commencent, l'une par:
4 -- START: from 3.8.1
...et se termine par:
13 -- END: from 3.8.1
Et l'autre par:
79 -- START: from 3.8.5
...et se termine par:
123 -- END: from 3.8.5
Problème du moteur de table
Par défaut, le serveur MySQL de Haisoft utilie le moteur de table innoDB et non, celui par défau, MyISAM. Il faut donc, comme le demande la documentation, modifier le fichier dbupdate-3.8.0-to-3.9.0.sql.
La modification,qui consiste à ajouter la commande TYPE = InnoDB en fin de requête CREATE TABLE, porte uniquement sur les 4 requêtes de création de nouvelles tables que contient le fichier.
Voici les 4 modifications:
15 CREATE TABLE ezcontentobject_trash ( 16 contentobject_id int(11) default NULL, 17 contentobject_version int(11) default NULL, 18 depth int(11) NOT NULL default '0', 19 is_hidden int(11) NOT NULL default '0', 20 is_invisible int(11) NOT NULL default '0', 21 main_node_id int(11) default NULL, 22 modified_subnode int(11) default '0', 23 node_id int(11) NOT NULL, 24 parent_node_id int(11) NOT NULL default '0', 25 path_identification_string longtext, 26 path_string varchar(255) NOT NULL default '', 27 priority int(11) NOT NULL default '0', 28 remote_id varchar(100) NOT NULL default '', 29 sort_field int(11) default '1', 30 sort_order int(11) default '1', 31 PRIMARY KEY (node_id) 32 )TYPE = InnoDB; <=== ICI !!!
47 CREATE TABLE ezcontentclass_name 48 ( 49 contentclass_id int NOT NULL default '0', 50 contentclass_version int NOT NULL default '0', 51 language_locale varchar(20) NOT NULL default '', 52 language_id int NOT NULL default '0', 53 name varchar(255) NOT NULL default '', 54 PRIMARY KEY (contentclass_id, contentclass_version, language_id) 55 )TYPE = InnoDB; <=== ICI !!!
73 CREATE TABLE `ezsearch_search_phrase_new` ( 74 `id` int(11) NOT NULL auto_increment PRIMARY KEY , 75 `phrase` varchar(250) default NULL, 76 `phrase_count` int(11) default '0', 77 `result_count` int(11) default '0' 78 )TYPE = InnoDB; <=== ICI !!!
94 CREATE TABLE `ezsearch_return_count_new` ( 95 `id` int(11) NOT NULL auto_increment PRIMARY KEY, 96 `phrase_id` int(11) NOT NULL default '0', 97 `time` int(11) NOT NULL default '0', 98 `count` int(11) NOT NULL default '0' 99 )TYPE = InnoDB; <=== ICI !!!
Appliquer la mise à jour
mysql -u monidentifiant -pmonmotdepasse mabasededonnees < update/database/mysql/3.9/dbupdate-3.8.0-to-3.9.0.sql
Un des résultats de l'application du fichier de mise à jour de la base de données est la création des quatres nouvelles tables suivantes:
ezcontentobject_trash ezcontentclass_name ezsearch_search_phrase ezsearch_return_count
Restauration du dump en cas de problème:
S'il vous arrive quoi que ce soit, vous pouvez très facilement retrouver le stade initial de votre base de données en commençant par supprimer toutes ses tables puis en restaurant le dump (le fichier de sauvgarde) avec cette commande:
mysql -u monidentifiant -pmonmotdepasse -D mabasededonnees < entre-lac-et-montagne.com0731173723.mysql
Le script updateclasstranslations.php
Message d'erreur
L'application de ce script avec la commande ci-dessous peut entrainer un message d'erreur:
/usr/bin/php update/common/scripts/3.9/updateclasstranslations.php -s accueil_paysan --language=fre-FR
Using siteaccess 'accueil_paysan' for translation update
Updating Folder class
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 42 bytes) in
/usr/local/www/ezp390/lib/ezxml/classes/ezdomdocument.php on line 271
Allowed memory size of 33554432 bytes exhausted (tried to allocate 34 bytes)
Il semble donc que j'ai un problème de quantité de mémoire insuffisante allouée à l'exécution du script. Pourtant, mon fichier php.ini contient:
vi /etc/php4/apache/php.ini
238 ;;;;;;;;;;;;;;;;;;; 239 ; Resource Limits ; 240 ;;;;;;;;;;;;;;;;;;; 241 242 ;max_execution_time = 30 ; Maximum execution time of each script, in seconds 243 max_execution_time = 600 244 max_input_time = 120 ; Maximum amount of time each script may spend parsing request data 245 ;memory_limit = 8M ; Maximum amount of memory a script may consume (8MB) 246 memory_limit = 128M
Solution 1
La première solution consiste à exécuter la commande avec l'option suivante:
/usr/bin/php -dmemory_limit=128M update/common/scripts/3.9/updateclasstranslations.php -s accueil_paysan --language=fre-FR
Using siteaccess 'accueil_paysan' for translation update Updating Folder class Updating Article class Updating User group class Updating User class Updating Image class Updating Link class Updating File class Updating Comment class Updating Common ini settings class Updating Template look class Updating Dossier Lac et Montagne class Updating Article Lac et Montagne class Updating Nouvelle Classe class Updating Galerie 1 Simple slideshow class Updating Image Simple slideshow class Done
Solution 2
En fait le problème provient du fait que lorsqu'on utilise CLI (et avec certaines distributions Linux dont Debian) le fichier de configuration utilisé n'est pas:
/etc/php4/apache/php.ini
mais:
/etc/php4/cli/php.ini
Il convient donc de s'assurer des valeurs suivantes dans ce dernier fichier:
max_execution_time = 300 ; Maximum execution time of each script, in seconds max_input_time = 120 ; Maximum amount of time each script may spend parsing request data memory_limit = 60M ; Maximum amount of memory a script may consume (32MB)
Il n'est pas nécessaire de relancer le serveur Apache après avoir modifié le fichier de configuration de PHP CLI car ce n'est pas le serveur web qui exécute ces scripts mais le système.
Le script cor rectxmltext.php
Pour appliquer ce script, j'utilise la commande suivante:
/usr/bin/php update/common/scripts/3.9/correctxmltext.php --global
Element 'td': class 'justifier_texte' is added to the list. Element 'paragraph': class 'saut_de_ligne' is added to the list. Element 'table': class 'tableau_2' is added to the list. Element 'embed': class 'padding_right_object' is added to the list. Element 'embed': class 'padding_left_object' is added to the list. Element 'header': class 'centre' is added to the list. Element 'paragraph': class 'indent30' is added to the list. Element 'td': class 'centrer_texte' is added to the list. Element 'table': class 'tableau_1' is added to the list. Element 'td': class 'texte_a_gauche' is added to the list. Element 'strong': class 'orange1' is added to the list. Element 'strong': class 'bleu1' is added to the list. Element 'strong': class 'rose1' is added to the list. Element 'strong': class 'vert1' is added to the list. Element 'strong': class 'bleu5' is added to the list. Settings file 'settings/override/content.ini.append' has been updated. XML text blocks: OK Done.
Le script updatetypedrelation.php
Pour appliquer ce script, j'utilise la commande suivante (dont la sortie est très très verbeuse, en l'occurrence 1092 lignes):
/usr/bin/php update/common/scripts/3.9/updatetypedrelation.php -s accueil_paysan
... ... ... Added embed relation. Object ID 408( ver. 9 ) => ID 424 Added embed relation. Object ID 408( ver. 9 ) => ID 425 Added embed relation. Object ID 408( ver. 9 ) => ID 426 Added embed relation. Object ID 408( ver. 9 ) => ID 427 Added embed relation. Object ID 408( ver. 9 ) => ID 428 Total: 1092 relation(s) detected at 29 objects.
Dernières étapes
On renomme le répertoire rep_tempo/
mv rep_tempo rep_tempo_orig
Puis le répertoire ezp390/
mv ezp390 rep_tempo
On test la nouvelle version du site.
Site public:
Accès interface d'administration
Commentaires














