Blog
Checklist de mise à jour PrestaShop 1.7 vers 9 : 12 étapes avant de cliquer sur « Mettre à jour »
Mettre à jour une boutique de PrestaShop 1.7 vers 9, ça ne se fait pas en un clic. Entre ces deux versions, PrestaShop a relevé la version minimale de PHP, supprimé des centaines de classes du cœur, remplacé le thème par défaut et revu la façon dont le back-office est construit. La mise à jour elle-même se passe généralement bien. Ce qui casse, c’est tout ce qui gravite autour : un module de paiement qui appelle une méthode qui n’existe plus, un override qui cesse de fonctionner sans prévenir, ou un template de thème qui attend des variables que PrestaShop 9 ne transmet plus.
Cette checklist reprend l’ordre dans lequel nous travaillons lorsque nous préparons une boutique pour PrestaShop 9. L’essentiel se fait avant de lancer la mise à jour, sur une copie de la boutique, pour que rien ne casse côté clients.
Avant de commencer : notez trois choses
Ouvrez le back-office et allez dans Advanced Parameters → Information. Notez :
- Votre version de PrestaShop, par exemple 1.7.8.11 ou 8.1.7.
- Votre version de PHP, affichée sur la même page dans les informations serveur.
- Le nombre de modules qui ne viennent pas de PrestaShop. Dans Modules → Module Manager, repérez ceux que vous avez installés vous-même ou achetés. Ce sont eux qui déterminent la difficulté de la mise à jour.
Une boutique en 1.7.8 sous PHP 7.4 avec une vingtaine de modules tiers, c’est un vrai projet. Une boutique en 8.2 sous PHP 8.1 avec cinq modules bien maintenus, c’est l’affaire d’un après-midi.
La checklist en 12 étapes
1. Faites une sauvegarde complète et une copie de préproduction
Sauvegardez à la fois les fichiers et la base de données, et vérifiez que vous savez réellement les restaurer. Créez ensuite une copie de préproduction (staging) de la boutique sur un serveur du même type, idéalement sur un sous-domaine protégé par mot de passe. Toutes les étapes ci-dessous se font d’abord sur cette copie. On ne touche à la boutique en production qu’à la toute fin.
2. Vérifiez le serveur : PHP 8.1 ou supérieur
PrestaShop 9 exige PHP 8.1 ou supérieur (la 9.0 prend en charge PHP 8.1 à 8.4, la 9.1 ajoute la 8.5 ; voir la configuration requise officielle). C’est le blocage le plus fréquent pour les boutiques en 1.7, car PrestaShop 1.7 ne tourne pas du tout sous PHP 8. Demandez à votre hébergeur quelles versions de PHP il propose et si vous pouvez changer de version site par site. Vérifiez aussi memory_limit (la documentation officielle recommande au moins 512M), max_execution_time, et que les extensions intl, zip, gd et mbstring sont activées.
3. Planifiez le chemin : 1.7 → 8 → 9
La mise à jour directe de 1.7 vers 9 n’est pas prise en charge : l’Update Assistant officiel fait d’abord passer les boutiques 1.7 en PrestaShop 8. Les exigences PHP dictent ensuite le reste du parcours. PrestaShop 1.7.8 tourne jusqu’à PHP 7.4, PrestaShop 8 de PHP 7.2.5 à 8.1, et PrestaShop 9 démarre à PHP 8.1. Pour une boutique en 1.7, le chemin sûr est donc généralement :
- Mettre à jour de 1.7.8 vers 8.2 en restant sous PHP 7.4.
- Passer le serveur en PHP 8.1, pris en charge à la fois par PrestaShop 8 et 9, puis tester.
- Mettre à jour de 8.2 vers 9.
Chaque étape ne change qu’une seule chose à la fois : quand quelque chose casse, vous savez d’où ça vient. Une boutique déjà en PrestaShop 8 peut passer directement en 9.
4. Listez tous les modules tiers et vérifiez auprès de leurs éditeurs
Pour chaque module qui n’est pas fourni avec PrestaShop, notez sa version et vérifiez si l’auteur a publié une version compatible PrestaShop 9. Les modules achetés sur PrestaShop Addons indiquent les versions prises en charge sur leur fiche produit. Si un module n’a pas été mis à jour depuis des années, prévoyez l’une de ces trois issues : le remplacer, le faire corriger ou le supprimer. Les modules inutilisés sont le gain le plus facile : désinstallez-les avant la mise à jour, et ils ne pourront rien casser.
5. Analysez vos modules pour repérer le code supprimé par PrestaShop
Entre la 1.7.8 et la 9.0, PrestaShop a supprimé 444 classes du cœur, environ 1 800 méthodes, 23 constantes et 16 hooks. Un module qui utilise l’un d’eux provoquera une erreur fatale ou cessera discrètement d’assurer une partie de son rôle.
Inutile de les chercher à la main. Nous avons publié un script gratuit et open source qui analyse un module et liste chaque classe, méthode et hook supprimé qu’il utilise, avec le fichier et la ligne, et qui suggère le remplacement pour les cas les plus courants. Il est présenté dans un outil gratuit de vérification de compatibilité PrestaShop 9 pour les modules. Pour vérifier d’un coup tous les modules d’une boutique :
for m in /var/www/shop/modules/*/; do php ps9check.php "$m"; done
Voici à quoi ressemble un résultat typique :
ERROR yourmodule.php:176
Tools::displayPrice() was removed in PrestaShop 9.0.
→ Use $this->context->getCurrentLocale()->formatPrice($price, $this->context->currency->iso_code).
Un rapport court signifie généralement des corrections d’une ligne. Un rapport long signifie que le module demande un vrai travail, et mieux vaut le savoir maintenant qu’après la mise à jour.
6. Vérifiez la plage de compatibilité déclarée par chaque module
Chaque module déclare les versions de PrestaShop qu’il prend en charge dans ps_versions_compliancy. Si la version maximale est inférieure à 9.0, par exemple 'max' => '8.99.99', PrestaShop 9 refuse de l’installer. Le scanner le signale également. N’augmentez cette valeur qu’une fois le module réellement testé sur PrestaShop 9 ; sinon, vous ne faites que masquer le problème.
7. Repérez vos overrides
Les overrides sont des fichiers placés dans le dossier /override qui remplacent des parties du cœur de PrestaShop. Ils étaient très répandus à l’époque de la 1.6 et de la 1.7. Lorsque PrestaShop supprime ou renomme la méthode qu’un override remplace, celui-ci n’est tout simplement plus jamais appelé, sans aucun message d’erreur. La fonctionnalité qu’il ajoutait disparaît, c’est tout.
Listez tout le contenu de /override/classes et /override/controllers, identifiez le module ou le développeur à l’origine de chaque fichier, et vérifiez que la méthode surchargée existe toujours dans PrestaShop 9. Test rapide : dans Advanced Parameters → Performance, vous pouvez désactiver tous les overrides sur la copie de préproduction et voir ce qui change.
8. Anticipez la question du thème
PrestaShop 9 est livré avec un nouveau thème par défaut, Hummingbird. La mise à jour ne change pas votre thème automatiquement : une boutique sous Classic ou sous un thème acheté le conserve. C’est une bonne nouvelle, mais cela a deux conséquences :
- Un thème acheté a besoin de sa propre version PrestaShop 9, fournie par son auteur, exactement comme un module.
- Des modules qui fonctionnent avec Classic peuvent se comporter différemment sous Hummingbird, et inversement. Hummingbird utilise les CSS cascade layers et sa propre modale de panier, ce qui a cassé plusieurs parties de notre propre module de panier jusqu’à ce que nous les corrigions. Tous les détails sont dans notre retour d’expérience sur la mise à jour d’un module vers PrestaShop 9.
Si vous comptez passer à Hummingbird plus tard, testez dès maintenant vos modules importants dessus, puisque vous êtes de toute façon en phase de tests.
9. Commencez par les modules de paiement et de livraison
Tous les modules cassés n’ont pas le même coût. Un module de blog cassé, c’est gênant. Un module de paiement ou de livraison cassé, c’est zéro commande. Testez-les en premier et avec le plus de soin, et vérifiez auprès du prestataire de paiement que son module prend officiellement en charge PrestaShop 9. Les modules de paiement sont aussi ceux qui ont le plus de chances d’avoir été écrits pour la 1.7 et de ne plus jamais avoir été retouchés depuis.
10. Lancez la mise à jour sur la copie de préproduction
Utilisez le module officiel Update Assistant de PrestaShop (anciennement 1-Click Upgrade ; voir le guide de mise à jour officiel). Activez le mode debug sur la copie de préproduction avant de commencer (Advanced Parameters → Performance → Debug mode), pour voir les vraies erreurs plutôt qu’une page blanche. Notez chaque erreur et chaque notice. Une notice qui paraît anodine en mode debug peut tout de même être le symptôme d’un module qui ne fonctionne qu’à moitié.
11. Testez le parcours d’achat de bout en bout
Après la mise à jour, passez de vraies commandes de test sur la copie de préproduction :
- Parcourez une catégorie et une fiche produit.
- Ajoutez au panier, modifiez la quantité, retirez un produit.
- Appliquez un bon de réduction.
- Passez le tunnel de commande en tant qu’invité et en tant que client connecté.
- Payez avec chacun des moyens de paiement proposés (en mode test).
- Vérifiez l’e-mail de confirmation de commande et la commande dans le back-office.
Faites-le sur ordinateur et sur smartphone. Les problèmes de panier et de tunnel de commande n’apparaissent souvent que sur mobile, par exemple un bouton fixe qui se retrouve au mauvais endroit. Si votre boutique utilise un panier coulissant ou en popup, testez-le explicitement : le panier est la partie de la boutique la plus étroitement liée au thème. Notre module Block Sliding Cart est un exemple de module de panier qui fonctionne déjà sur PrestaShop 1.7, 8 et 9, aussi bien sous Classic que sous Hummingbird.
12. Planifiez la mise en production et le retour arrière
Une fois la préproduction validée, refaites la mise à jour sur la boutique en production à un moment calme, en mode maintenance. Définissez à l’avance ce que signifie « ça s’est mal passé » et comment vous faites le retour arrière : restaurer la sauvegarde de l’étape 1 doit prendre quelques minutes, pas des heures. Après la mise en production, surveillez le journal d’erreurs et le nombre de commandes pendant quelques jours.
Ce qui casse le plus souvent
Lorsque nous avons mis à jour notre propre module, la partie PHP a demandé moins de modifications que prévu. Les problèmes qui nous ont coûté le plus de temps étaient :
- Des méthodes du cœur supprimées, comme
Tools::displayPrice(), qui ont provoqué des erreurs fatales à sept endroits. - Des classes déplacées dans un nouveau namespace, comme les presenters du panier et des produits.
- Le nouveau thème : une liste de panier transformée en grille à deux colonnes à cause des CSS layers, et une fonction du thème qui levait une erreur lorsqu’elle recevait le HTML propre au module.
- Des notices en mode debug qui semblaient anodines mais faisaient planter des pages avec des contrôles plus stricts.
L’histoire complète, avec les correctifs de code, se trouve dans Mettre à jour un module PrestaShop vers PrestaShop 9 : ce qui a cassé et comment nous l’avons corrigé.
La checklist en bref
| # | Étape | Fait |
|---|---|---|
| 1 | Sauvegarde complète (fichiers + base de données), restauration testée, copie de préproduction créée | ☐ |
| 2 | L’hébergeur propose PHP 8.1+ ; mémoire et extensions vérifiées | ☐ |
| 3 | Chemin de mise à jour choisi (1.7 → 8.2 → PHP 8.1 → 9, ou 8 → 9) | ☐ |
| 4 | Modules tiers listés ; modules inutilisés supprimés | ☐ |
| 5 | Tous les modules analysés pour repérer le code supprimé | ☐ |
| 6 | ps_versions_compliancy vérifié |
☐ |
| 7 | Overrides listés et vérifiés | ☐ |
| 8 | Le thème dispose d’une version PrestaShop 9 ; modules clés testés sous Hummingbird | ☐ |
| 9 | Compatibilité PrestaShop 9 des modules de paiement et de livraison confirmée | ☐ |
| 10 | Mise à jour lancée en préproduction avec le mode debug activé | ☐ |
| 11 | Commandes de test passées sur ordinateur et sur mobile | ☐ |
| 12 | Créneau de mise en production et plan de retour arrière validés | ☐ |
Questions fréquentes
Peut-on mettre à jour directement de PrestaShop 1.7 vers 9 ?
Non. L’Update Assistant officiel fait d’abord passer les boutiques 1.7 en PrestaShop 8 ; par ailleurs, PrestaShop 1.7 ne tourne pas sous PHP 8, alors que PrestaShop 9 exige PHP 8.1 ou supérieur. Le chemin sûr : passer de 1.7.8 à 8.2 avec votre version actuelle de PHP, basculer ensuite en PHP 8.1, puis mettre à jour vers la 9.
Mes modules fonctionneront-ils sous PrestaShop 9 ?
Ceux que leur auteur a mis à jour pour PrestaShop 9, oui. Les modules plus anciens ne fonctionnent que s’ils n’utilisent aucun code supprimé par PrestaShop. Notre outil de vérification de compatibilité gratuit liste ce code pour chaque module, pour que vous sachiez à quoi vous attendre avant la mise à jour.
Quelle version de PHP faut-il pour PrestaShop 9 ?
PHP 8.1 ou supérieur. Vérifiez les versions prises en charge par votre hébergeur avant de planifier quoi que ce soit d’autre.
Faut-il obligatoirement passer au thème Hummingbird ?
Non. La mise à jour conserve votre thème actuel. Un thème acheté a besoin d’une version PrestaShop 9 fournie par son auteur, et il est utile de tester vos modules importants sous Hummingbird si vous comptez en changer plus tard.
Combien de temps prend une mise à jour vers PrestaShop 9 ?
La mise à jour en elle-même prend de quelques minutes à une heure. C’est la préparation qui prend plus de temps : d’un après-midi pour une boutique PrestaShop 8 avec quelques modules maintenus, à plusieurs jours pour une boutique 1.7 avec beaucoup de modules anciens et d’overrides.
Si le rapport d’analyse est long
Certaines boutiques bouclent cette liste en une journée. D’autres découvrent que la moitié de leurs modules doivent être modifiés. Si vous préférez confier cette partie, c’est précisément notre métier : corrections de modules pour PrestaShop 9. Nous trouvons la cause, corrigeons sur une copie de votre boutique, et seulement ensuite nous déployons. Envoyez-nous le rapport du scanner, nous vous répondrons avec nos questions ou un devis.
