Migration de Dotclear 2.0-beta7 du module OVH vers DC2.1.1 tout seul
lundi 17 novembre 2008 à 22:50
Comme pas mal de monde, j'ai testé DC2 chez OVH sur un 90plan à l'aide des modules. Ces derniers sont extrêmement pratiques pour une installation rapide, mais n'ont pas été mis à jour par OVH. Il est donc temps de migrer vers la dernière version disponible, ce qui ne se fait pas tout seul à cause d'une toute petite astuce...
La version courte est : ajouter l'enregistrement "core=2.0" à la table dc2_version de votre base et en suivant toute la doc normale de Dotclear, cela devrait rouler.
Sinon voici la version longue.
Ce tuto est probablement valable pour d'autres installations. Voyons les messages d'erreur rencontrés.
Commencer par effectuer une mise à jour comme indiqué dans la doc de mise à jour de Dotclear. Attention aux sauvegardes de vos fichiers !
Si vous avez les messages d'erreur suivants sur la page d'admin :
Parse error: syntax error, unexpected '{' in /homez.xx/login/www/dc2/admin/auth.php on line 39
ou sur un billet :
Parse error: syntax error, unexpected '{' in /homez.xx/login/www/dc2/inc/public/prepend.php on line 37
C'est que vous avez oublié de copier le .htaccess d'OVH qui va activer le php5 et désactiver le mod_gzip.
Si vous avez le message suivant sur un billet :
Fatal error: Uncaught exception 'Exception' with message 'Unknown column 'C2.cat_lft' in 'field list' (1054)' in /homez.xx/login/www/dc2/inc/clearbricks/dblayer/class.mysql.php:103 Stack trace: #0 /homez.xx/login/www/dc2/inc/clearbricks/dblayer/dblayer.php(311): mysqlConnection->db_query(Resource id #14, 'SELECT C2.cat_i...') #1 /homez.xx/login/www/dc2/inc/core/class.dc.categories.php(102): dbLayer->select('SELECT C2.cat_i...') #2 /homez.xx/login/www/dc2/inc/core/class.dc.categories.php(39): nestedTree->getChildren(0, NULL, 'desc', Array) #3 /homez.xx/login/www/dc2/inc/core/class.dc.blog.php(256): dcCategories->getChildren(0, NULL, 'desc') #4 /homez.xx/login/www/dc2/plugins/widgets/_default_widgets.php(55): dcBlog->getCategories(Array) #5 /homez.xx/login/www/dc2/plugins/widgets/_public.php(14): include('/homez.44/suric...') #6 /homez.xx/login/www/dc2/inc/core/class.dc.modules.php(501): require('/homez.44/suric...') #7 /homez.xx/login/www/dc2/inc/core/class.dc.modules.php(479): dcModules->loadModuleFile(' in /homez.xx/login/www/dc2/inc/clearbricks/dblayer/class.mysql.php on line 103
ou si une fois loggé admin, vous avez
Erreurs : - Unknown column 'C2.cat_lft' in 'field list' (1054) - Unknown column 'post_position' in 'field list' (1054)
ou
Warning: in_array() function.in-array: Wrong datatype for second argument in /homez.xx/login/www/dc2/admin/posts.php on line 195 Warning: Cannot modify header information - headers already sent by (output started at /homez.xx/login/www/dc2/admin/posts.php:195) in /homez.xx/login/www/dc2/inc/admin/lib.dc.page.php on line 78
C'est que la mise à jour ne s'est pas faite (à ce stade, c'est "normal")
En fait, la mise à jour ne se fait pas parce qu'un champ est absent de la table dc2_version. Pourquoi ? Mystère... Toujours est-il qu'il va falloir modifier la base de données pour pouvoir ajouter ce champ. Sauf que...
Sauf que ce n'est pas vous qui avez installé le blog, mais OVH et que la base n'est pas accessible par PhpMyAdmin. En tout cas pas dans mon installation pour laquelle la base est "sql2.modules" et n'est pas proposée.
Pour connaître vos paramètres de base de données, allez regarder le contenu du fichier inc/config.php que vous avez bien sûr sauvegardé en suivant la doc DC2.
Dans mon cas (90plan), j'ai un accès en ssh sur le serveur, ce qui me permet de passer des commandes mysql en ligne. Il suffit alors de passer la commande suivante, en reprenant les paramètres du config.php :
mysql --host=DC_DBHOST --user=DC_DBUSER -p DC_DBNAME
Il demande un mot de passe qui est, croyez-le ou non DC_DBPASSWORD !
Une fois connecté sur la base entrez les commandes :
mysql> insert into dc2_version (module,version) values ('core','2.0'); Query OK, 1 row affected (0.01 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec) mysql> exit; Bye
Si vous n'avez pas accès en ligne de commande à votre mysql, copiez ce code php, LISEZ LE car on accède quand même à votre base de données de blog, on pourrait tout effacer, puis transférez-le sur le serveur à la racine de votre blog (eg : /homez.xx/login/www/dc2/), accédez au fichier avec votre navigateur (http://www.domaine.tld/dc2/myupdate.php) et hop :-)
Une fois cette mise à jour effectuée, connectez-vous sur la page d'administration de votre blog. Vous devriez avoir un joli message en gris au-dessus du login :-)
Au passage, le module est toujours présent dans la liste des modules installés par OVH. Je n'y ai pas touché sur mon blog de test. Sur un autre, j'ai simplement changé l'hébergement de la base de données depuis les modules OVH vers la base du compte hébergé.
Ce billet devrait en rassurer certains, je vais enfin faire les corrections sur wFlickr et dcFlickr avec à peine 6 mois de retard depuis que Fulbert m'a signalé le problème !
(j'ai aussi un faire-part de naissance à la bourre depuis 8 mois - honte ! - ça n'a pas trop bouger depuis janvier - 3615 cestmavie)
3 commentaires »
Suivez le fil des commentaires en vous abonnant à ce lienFulbert
Le mercredi 26 novembre 2008 à 21:35
Suricat
Le jeudi 27 novembre 2008 à 01:03
page de casinos
Le mardi 20 janvier 2009 à 15:26