Mettre SPIP à jour : comment ?

Mettre à jour son SPIP est une opération assez fréquente, d’abord par mesure de sécurité !
Mais aussi pour profiter des améliorations fonctionnelles..

Il ne faut pas en avoir peur,
Toutefois, ce n’est pas à faire sans précautions !!
Car certaines conséquences en sont irréversibles :
En particulier
vérifiez les Pre-requis Techniques :
- contrôlez la version php de votre serveur [1],
- vérifiez la version chargée par spip_loader [2],
- étudiez les conséquences sur le SGBD ( MySQL vs. PostgreSQL ou SQLite )
- validez la compatibilité des plugins, ou désactivez-les d’abord,
- effacez ./extensions au passage en SPIP 3

Quelques précautions :
- Avez-vous commencé par Sauvegarder SPIP ?
- Vérifiez (Désactivez ?) tous les plugins, et
- Purgez le cache avant la mise-à-jour !

Mais je vous rassure : çà marche !
(voir Une montée de version "drastique" !
 ! Et c’est à faire régulièrement !

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Comment être tenu au courant de des annonces de SPIP ?
- le plus simplement du monde en s’inscrivant sur la mailing liste http://listes.rezo.net/mailman/listinfo/spip-ann .
- notez aussi que votre espace privé vous le rappellera en permanence...

Notons d’abord qu’il faut distinguer deux cas de mise-à-jour, selon qu’il s’agit de :
- une montée mineure (de la 2.0.4 à la 2.1.13 par exemple), ou
- une mise-à-jour majeure : cela concerne en fait le passage d’un SPIP 2 à un SPIP 3.0 ; bien lire les avertissements, car souvent des fichiers du programme ont changé de place... et c’est la zone !

Évidemment, si vous utilisiez encore une "vieille version" de SPIP, d’avant la V2, montez en 2.1... : par exemple Montée d’une 1.9 directement en 2.1.19 !

Pourquoi faire un passage d’abord à la dernière version 2.1 ? En effet, cette étape n’est pas indispensable (et il existe nombre de réussites directes signalées, même d’une migration de SPIP 1.8 directement en version SPIP 3) ; alors, pourquoi cet avis ? Parce que :
- Déjà, vous devrez vérifier l’encodage en UTF-8 de votre base de données (menu langues) ; l’accès rapide aux outils intégrés de conversion en UTF-8 disparait des versions suivantes [3] !
- Et surtout, si vous n’êtes pas habitués aux outils phpMyAdmin, Adminer ou MySQL, il vous sera beaucoup plus facile de revenir intervenir en cas de problème ; vous pourrez donc plus facilement adapter vos squelettes en v2.1, avant de migrer en v3 : car c’est désormais la finalisation à obtenir..

 Quelle est la version installée ?

Normalement, votre SPIP est opérationnel, et, dans l’espace privé, vous vérifierez le numéro exact de version en bas de l’espace privé...

Si vous avez conservé les squelettes standards, vous pourrez aussi aussi regarder le source d’une page visitée ( Ctrl+U ), et apercevoir l’indication dans le header HTML

Mais si vous n’avez accès qu’aux sources installées (par FTP ), il faut regarder
le fichier /ecrire/inc_version.php avant la ligne 300 :
[295] $spip_version_branche = "3.0.5";
ou le contenu du fichier./svn_revision.

Quant aux sauvegardes, il faut regarder dans le dump de la table des metas :
- spip_metas / version_installee (donne le numéro de SVN : contrôler dans http://www.spip.net/fr_article4449.html )

Plus simplement, si vous voyez un certain nombre de tables spip_mots_XXX c’est encore en v2 ou plus ancien ; s’il n’y a plus que spip_mots_liens, vous êtes déjà en SPIP 3. [4]

Il vous est conseillé de vous en tenir aux versions stables par branches de SPIP.

 Risques et Précautions

Parmi les conséquences d’une montée de version, la plus gênante concerne les changements de structure éventuellement apportés à la base de donnée de façon automatique par SPIP [5], car aucun outil direct (et presque aucune manipulation simple ne permet le retour en arrière) : donc Sauvegarder SPIP [6] ; une autre solution -plus "riche"-, est de dupliquer la BDD sur son hébergeur.

En SPIP standard, on met parfois quelques réglages directement dans les sources des deux fichiers mes_options et mes_fonctions... Comme ces constantes ne sont pas toujours compatibles, vérifiez le contenu de ces fichiers, et -dans un premier temps- commentez les lignes référant des éléments douteux, ou suspendez leur usage en les renommant par FTP.

En général, les plugins sont désormais compatibles ascendants entre versions au sein d’une même branche ; par contre, le portage de tous les plugins SPIP en SPIP 3.1 n’est pas garanti, ou bien certains sont devenus inutiles : un plugin dédié [Vérifier 31-http://contrib.spip.net/4601] contrôle l’ensemble des plugins que vous voudrez utiliser, et vous pouvez utiliser un [plugin dédié pourvérifier le passage à SPIP 3.1 !

Dans certains cas, la nouvelle version de SPIP n’utilise plus d’anciens fichiers, qui restent à ’polluer’ votre système [7] ; il peut être utile de supprimer totalement les répertoires de code [8].
Depuis le nouvel An 2016 (et son lots de problèmes sécuritaires), on recommandera une méthode drastique : déplacer les arborescences de fichiers modifiées (essentiellement ./ecrire/ et ./plugins-dist/) et purger le cache complet.

Ce genre de soucis peut aussi arriver dans la mise-à-jour des plugins [9], mais le système SVP de SPIP 3 permet une Installation de plugins, pas de soucis SVP en déplaçant l’ancienne arborescence du code source...

Enfin, il peut être utile de vérifier préalablement votre version de PHP (Des cas..... résolus ! PHP5) : SPIP 2.1 et SPIP 3 sont prévus pour fonctionner sans bugs avec php5 ; toutefois les dernières versions de php (5.5 en fin 2013) peuvent parfois poser quelques soucis de Compatibilité minimale [10] : il est donc possible de suivre la dernière version de php, mais pas obligatoire, et même plutôt dé-conseillé [11]


Dans tous les cas, "assurez-vous" , c’est-à-dire ayez une sauvegarde :
- de la base de données (le DUMP XML [12] , ou aussi bien, voire mieux, une sauvegarde SQL !!)
en SPIP 3 un bug peut subsister sur la remontée d’un dump SPIP en MySQL : en attendant sa correction, vous pouvez utiliser un export-import PhpMyAdmin ou le plugin Adminer !
Et n’oubliez pas de garder également copie :
- des squelettes (l’ensemble du dossier ./squelettes)
- des documents annexés, pièces jointes et images : tout le contenu du dossier ./IMG
- des fichiers spéciaux (mes_options ou mes_fonctions mis dans ./config, divers .htaccess du dossier principal.. [13]),
- de la liste des plugins (avec leurs numéros de versions) : cela peut servir..
- vérifiez la version PHP de votre hébergeur (utilisez ecrire/?exec=info, en tant que webmestre, ou auteur n°1)
- avez-vous noté les codes et mots de passe (de la base de données, du FTP, de votre utilisateur favori [14] et du mail correspondant...).

Vous pouvez utiliser en SPIP 2 le plugin mes_fichiers, qui vous construit un ZIP unique... presque complet !

Notez que SPIP vous informera (dans l’espace privé) de la disponibilité de la dernière version plus à jour si elle existe !

Ensuite, -quand vous avez fait vos sauvegardes- voyons les deux approches principales pour mettre à jour le site public (Rappel : il est toujours conseillé d’en faire d’abord une première mise-à-jour sur votre copie de test en hébergement local : cela permettra de valider la compatibilité de vos squelettes et des plugins utilisés !).

Notez aussi de "vider le cache" depuis votre Interface privée, avant la montée de version ; cela pourra vous éviter des terreurs au redémarrage du site : voir pour des explications sur le cache en cas de Connexion impossible.... cache hé ? !
Vous pouvez éliminer de nombreux problèmes en désactivant temporairement plugins et squelettes : renommez ces deux répertoires !

 Pour une montée de version mineure

En général, il n’y a pas de grands risques, mais informez-vous et attendez un peu : lisez néanmoins les conseils et retours d’expériences, sur la liste [15], ou sur Contrib, alias http://spip-contrib.net...

Il vous suffira de télécharger la version actuelle de SPIP depuis SPIP Download comme expliqué, par exemple en un site en spip en 15mn, c’est possible...... ou d’utiliser spip_loader [16].
Ensuite, comme il est possible que SPIP prévoie une adaptation de la base de données, se reconnecter à l’espace privé en Administrateur authentifié : cela activera automatiquement les éventuelles adaptations nécessaires (peut-etre avec besoin d’une authentification FTP), si une modification est prévue à la structure de base de données.

Rappel de précaution (cf.Connexion impossible.... cache hé ?) : avant d’installer, videz le cache, et connectez-vous en FTP pour pouvoir désactiver les plugins et squelettes !

 Pour une mise-à-jour de version majeure

Après avoir appelé une évidence : vérifiez d’abord que votre site à mettre à jour est complètement fonctionnel(sinon, il vaut sans doute mieux régler les problèmes sous SPIP 2), et sauvegardé complètement [17] : voir Sauvegarder SPIP !

Ensuite, avant de vous lancer, videz le cache [18]
Il est souvent recommandé de déplacer l’ancienne arborescence de fichiers : conservez seulement une copie de :
- ./IMG : tous les documents joints (irremplaçable !)
- ./config : contient connect.php (anciennement dans ./ecrire) qui vous redonne les codes de connexion à la base de donnée.
- ./squelettes : vous aurez sans doute quelques corrections a faire..
- la liste des plugins (arborescence de ./plugins) voir Mettre à jour les plugins.
(eventuellement, si vous n’avez pas testé la migration en local,vous pourriez créer une copie de votre base pour un nouveau SPIP, avec un nouveau prefix ! )

Deux points sont à prendre en compte sur votre SPIP de base :

  1. la structure de la base de données presque sera certainement changée [19] : cela signifie que vos anciennes sauvegardes ne pourront pas etre remises, mais aussi que vous ne pourrez plus utiliser les sauvegardes de votre site pour revenir à une ancienne situation, qui fonctionnait, elle !!!
    SPIP prend automatiquement en charge l’adaptation de la structure d’une base de données ancienne en cas de montée de versions (disons en 1.8, 1.9 2.0 et 2.1..) ; donc il suffit de remettre une installation vierge correspondant à votre niveau de sauvegarde, et d’appliquer directement la dernière mise-à-jour mineure !
  2. les fichiers du core peuvent changer (de nom, d’emplacement...) : il est souvent conseillé de commencer par déplacer [20] les fichiers de votre site actuel, pour faire une ré-installation à neuf, sur un dossier vide (à l’exception des répertoires spécifiques de votre site : ./IMG, ./squelettes et ./config [21].
    Noter que ré-installer SPIP (après suppression/changement de nom des deux fichiers de config/connect.php ne vous fait pas perdre votre site : ayez juste noté votre code d’accès à la base de données..cf un site en spip en 15mn, c’est possible....

Après quoi, vous refaites le transfert complet (par spip_loader ou par FTP..), vous passez à l’installation initiale de la base de données, et...... à vous SPIP 3 !
Mais.... c’est tout cassé ! Si votre espace public a perdu sa belle apparence lors du passage a SPIP 3, c’est sans doute que vous utilisiez de nombreux fichiers de la dist, directement ; hors, suite a certaines modifications, les clauses de CSS, et meme quelques appels ont été déplacés... Donc dans certains cas vous devrez revoir vos squelettes.
D’autres petits soucis en SPIP 3.0.3 : voyez Mises à jour..... à problèmes ? [22] !

 Changer de SGBD

Bien que cette opération ne soit pas exactement une migration, elle s’y apparente par deux aspects :
- la sauvegarde et la restauration
- le controle des plugins [23].

Par exemple, avec un SPIP 3, pour migrer d’une base mysql
vers une base sqlite :
Dans ce sens-là : c’est facile (si votre hébergeur supporte bien SQLite ! [24]

  1. faire une sauvegarde classique (donne un "dump" SQLite),
  2. renommer ou détruire le config/connect.php (et le chmod.php),
    en choisissant SQLite (choix par défaut, mais pas forcément à choisir...),
  3. re-installer (refaire la connexion par l’appel à #URL_SITE_SPIP/ecrire )
  4. restaurer le Dump

Attention, suite a un bug spécifique 3.0.1 (non encore rétabli),
la restauration en MySQL proposée par SPIP 3 présente un souci.
Donc, exporter également un DUMP MySQL par toute autre formule classique
(PhpMyAdmin, mysqldump.....) [25]

Nota Bene : un cas particulier s’avère "intéressant", sans doute une bonne pratique à appliquer lors du passage en SPIP3 d’un site avec la base de données MySQL !
Conserver la base de donnée (de votre version SPIP 2.1 mise-à-jour), avant mise-à-jour technique en SPIP 3, et prendre la précaution de charger votre version 3 sur un autre jeu de tables MySQL, copie de la base d’origine !

Pour mémoire, même si votre hebergeur ne vous alloue qu’une seule base de données SPIP, il est facile d’installer un second SPIP : il suffit de jouer avec les prefix de base..

 Changer de jeu de codage des caractères

Ce sujet reste d’actualité, meme si SPIP 3 est d’office prévu en UTF-8 : en attendant une synthèse SPIP 3.


Merci de nous signaler les coquilles ou erreurs qui figureraient dans cette page.

[1./ecrire/?exec=info produit l’appel à phpinfo() en espace privé comme Webmestre !

[2Ou changez-la facilement : spip_loader avant lancement..!

[3Mais il reste possible de réaliser la conversion en SPIP 3 avec le plugin Grenier : voir Les boucles du Sommaire d’accueil.

[4Et s’il traine des tables xxspip13000 il est bien probable qu’une opération de restauration/fusion ait échoué !

[5Les modifications automatiquement apportées par SPIP à la structure de base de données sont cumulatives,ce qui signifie qu’une version plus récente est capable de couvrir les modifications d’étapes intermédiaires !

[6En particulier une sauvegarde SPIP2-XML et si possible SQL (par Le plugin saveauto : sauvegarde automatique de la base de données de SPIP, voir http://www.spip-contrib.net/spip.ph....

[7Le login.html en est un exemple connu, empêchant la connexion à l’espace privé ; surtout, il est parfois dupliqué dans une ancienne version dans vos squelettes personnels...et c’est la catastrophe !

[8Principaux répertoires de code de Squelettes de la "dist" : ./ecrire ./plugins-dist (et ./extensions spécifique à SPIP2), et de squelettes : ./squelettes-dist et ./prive.

[9C’était le cas du plugin Yaml, durant un automne 2013 : il fallait mettre a jour Yaml avant de monter la version de SPIP !

[10Ainsi, spip 3.0.11 était bien compatible Php 5.3 et 5.4, mais ne fonctionnait pas en php 5.5 ;
Maintenant, Spip 3.0.13 a reçu toutes les corrections minimales pour être fonctionnel aussi sous Php 5.5. -sans forcement bénéficier des fonctionnalités améliorées de la dernière version.

[11Par contre, il est toujours conseillé de ne pas attendre le sur-surlendemain pour faire une mise-à-jour de SPIP !!

[12Attention, depuis SPIP 3, le dump XML -sauvegarde standard de SPIP 2- n’est plus utilisable ; mais pour le remonter à partir d’un SPIP 2, souvenez-vous toujours qu’en SPIP 2, une sauvegarde devait être remontée sur un SPIP de même version : vous trouverez tous les anciens ZIP nécessaires en Archives !

[13Ce fichier était peut-etre obligatoire pour forcer le passage en PHP4 chez votre hébergeur (cf. Des cas..... résolus ! PHP5 de la FAQ Débutants).

[14Votre code de connexion à l’espace privé d’administration, c’est le plus facile à refaire, si vous avez encore la connexion FTP !!

[15Si vous n’etes pas abonné (erreur "grave"), vous pouvez consulter en ligne par ici ou mieux.

[16Probablement plus efficace (sauf chez Free = interdit !) : un transfert direct entre deux serveurs d’Internet, qui ont presque surement de bonnes liaisons.....pas comme votre RTC tout caillouteux !

[17Données, documents joints en IMG, squelettes, .htaccess et plugins configurés...

[18Vous ferez de même après chargement !

[19Consultez les notes en bas de page.

[20D’où l’intéret d’avoir installé votre SPIP dans un sous-dossier, qui vous permettra de changer son nom pour lancer la nouvelle installation, et d’y revenir si besoin facilement...

[21Et encore, dans certains cas, il est proposé de refaire l’installation après avoir effacé les fichiers de connexion ./config/connect.php !

[22Les squelettes sont compatibles, de SPIP2 à SPIP 3, à quelques raresdétails près, voir http://contrib.spip.net/Migration-d....

[23En effet, tous les plugins n’ont pas toujours été bien programmés avec utilisation des primitives d’accès aux bases de données proposées par le core de spip ; en consequence vous pouvez rencontrer des soucis, pour l’accès à des tables spip avec un préfixe spécifique, ou sur d’autres SGBD, y compris PostGres et SQLite..

[24Il semble que le support de SQLite intégré à PHP 5 ne soit pas toujours intégré par tous les hébergeurs, en particulier chez Free et Ovh !

[25Pour mémoire, l’effacement du connect.php n’efface pas les tables de la base MySQL : vous pourrez rétablir le fonctionnement, avec la même version de SPIP !

[26./ecrire/?exec=info produit l’appel à phpinfo() en espace privé comme Webmestre !

[27Ou changez-la facilement : spip_loader avant lancement..!


Liens visibles seulement pour les inscrits.

Article publié le 21 mai 2012, et actualisé en mars 2017 .

Répondre à cet article