Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Quand une mise à jour casse un module ou écrase vos modifications

Le module fonctionnait, vous avez accepté la mise à jour proposée, et depuis il ne fonctionne plus — ou il fonctionne, mais les adaptations faites pour vous ont disparu. Ce n’est pas de la malchance : un changement de version majeure réécrit la configuration, les tables et les fichiers du module, et ce passage est le moment le plus fragile de sa vie.

Décrire mon problème Écrire un message

Ce qu’une mise à jour de module fait réellement

Mettre à jour un module ne se limite pas à remplacer des fichiers. Sur PrestaShop comme sur WordPress, un module bien écrit exécute au passage une procédure de mise à niveau : elle peut ajouter des colonnes en base, renommer des clés de configuration, migrer d’anciens réglages vers un nouveau format, ou se raccrocher à d’autres points d’affichage.

Trois choses peuvent mal se passer. La procédure s’interrompt à mi-parcours, et la base se retrouve dans un état intermédiaire que le module ne sait pas relire. Les anciens réglages ne sont pas repris, et le module redémarre avec ses valeurs par défaut, ce qui donne l’impression qu’il ne fait plus rien. Ou la nouvelle version exige une version de PHP ou de la plateforme supérieure à la vôtre, et échoue silencieusement au chargement.

Le cas le plus déroutant est celui où le module semble fonctionner, mais où une partie seulement de ses réglages a survécu. Vous cherchez un bug là où il n’y a qu’une configuration perdue.

Quoi faire, et dans quel ordre

  1. Ne pas relancer la mise à jour en boucle

    Relancer une procédure de mise à niveau qui a échoué à mi-chemin peut aggraver l’état de la base, parce qu’elle rejoue des opérations déjà effectuées. Un état intermédiaire se répare, un état rejoué trois fois se répare beaucoup moins bien.

  2. Lire le journal d’erreurs du serveur

    Une exigence de version non satisfaite, une méthode manquante ou une colonne inexistante y apparaissent nommément. C’est ce qui distingue une incompatibilité d’un réglage perdu.

  3. Comparer la configuration avant et après

    Si vous disposez d’une sauvegarde antérieure, les valeurs de configuration du module s’y retrouvent et se comparent. C’est souvent là que se trouve l’explication complète.

  4. Revenir à la version précédente, si c’est possible

    Redescendre de version n’est sûr que si la base n’a pas été modifiée par la mise à niveau. Sinon, restaurer une sauvegarde complète du site est la seule marche arrière fiable.

Le cas particulier des modules de paiement et de transport

Ces modules-là méritent une attention distincte, parce que leur panne ne se voit pas sur la page d’accueil mais à la dernière étape du tunnel, c’est-à-dire au moment où vous perdez la vente. Une nouvelle version majeure change fréquemment la façon dont le module reçoit les retours du prestataire, et ces retours arrivent sur une adresse enregistrée chez le prestataire, pas dans votre boutique. Si la mise à jour change cette adresse, il faut la mettre à jour des deux côtés.

Après toute mise à jour d’un module de paiement, je passe une commande réelle de bout en bout, en conditions de production, et je vérifie que la commande est bien créée avec le bon statut. C’est le seul test qui prouve quelque chose.

L’autre issue : la mise à jour qui écrase vos modifications

Le symptôme inverse existe et se confond souvent avec le précédent : le module n’est pas cassé, il est simplement redevenu ce qu’il était. Une mise à jour remplace les fichiers du module par ceux de la nouvelle version. Elle ne compare pas, elle ne fusionne pas, elle écrase. Tout ce qui a été écrit à l’intérieur du dossier du module disparaît, sans avertissement et sans trace. La signature est reconnaissable : une fonction sur mesure qui disparaît deux fois par an, toujours après une opération de maintenance, et que personne ne relie à la mise à jour parce que l’intervalle est long.

Le second effet est plus vicieux : tant que la modification tient, elle bloque de fait les mises à jour. Comme personne ne veut la reperdre, le module reste sur une vieille version, accumule les incompatibilités et finit par produire exactement la panne décrite plus haut, en pire, le jour où la mise à jour devient inévitable.

Quand le module ne déclare aucun point d’extension et construit son affichage sans gabarit surchargeable, il n’y a pas de solution élégante, et je préfère l’annoncer plutôt que de laisser croire l’inverse. Restent trois options, dans cet ordre de préférence : demander l’ajout d’un point d’extension à l’éditeur du module, c’est gratuit et parfois accepté ; dupliquer le module sous un autre nom et l’assumer comme un module à vous, en sachant que vous renoncez à ses mises à jour et en devenez le mainteneur ; ou conserver la modification à part sous forme de correctif documenté, à réappliquer après chaque mise à jour. Ce que je ne fais pas : modifier un module et ne rien dire. Une modification non documentée dans un code que quelqu’un mettra à jour dans six mois est un piège pour la personne suivante, y compris quand cette personne, c’est moi.

Quatre façons d’adapter un module sans le modifier

Pages liées

Décrivez votre besoin en 1 minute

Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.

Qu’attendez-vous en priorité d’un contrat de maintenance ?
Quelle plateforme ?
Le site est-il à jour aujourd’hui ? (facultatif)

Un site en retard de plusieurs versions demande une remise à niveau avant tout contrat.

À quel rythme imaginez-vous les interventions ? (facultatif)
Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Questions fréquentes

Faut-il refuser les mises à jour de modules ?
Non. Un module non mis à jour finit par devenir incompatible avec la plateforme et peut porter des failles connues. Ce qu’il faut éviter, c’est la mise à jour appliquée directement en production sans sauvegarde ni test préalable.
Le module affiche une erreur de base de données depuis la mise à jour
C’est la signature d’une procédure de mise à niveau interrompue : une colonne ou une table attendue n’existe pas. La correction consiste à terminer la migration manquante, pas à réinstaller le module, ce qui ferait perdre les données existantes.
Mes réglages ont disparu, sont-ils récupérables ?
Souvent oui, s’ils sont encore présents dans la base sous leurs anciennes clés, ou dans une sauvegarde antérieure. C’est un travail de reprise de données, distinct de la correction du module lui-même.
Comment savoir si la nouvelle version est compatible avant de l’installer ?
La fiche du module indique les versions de la plateforme et de PHP qu’elle exige, et le fichier de description livré avec le module les mentionne également. Quand les deux se contredisent, c’est le fichier livré qui fait foi.
Comment savoir si mes modifications ont été écrasées ?
En comparant les fichiers du module avec ceux de la version publiée : les différences sautent aux yeux. Sur un site sans versionnement, c’est le seul moyen, et c’est aussi la raison pour laquelle je place les modifications ailleurs que dans le module.
Une surcharge de gabarit dans le thème survit-elle vraiment ?
Elle survit aux mises à jour du module, oui. En revanche, si le module change la structure de ses données, le gabarit surchargé peut cesser d’afficher la bonne chose : il faut le revérifier après chaque changement de version majeure du module.