Migrer PrestaShop 1.7 vers 8 et 9 : ce qui casse et comment s’y préparer

5 min de lecture Autres langues : PL EN

La mise à jour de PrestaShop 1.7 vers 8 ou 9 casse rarement le cœur lui-même. Ce qui casse, ce sont les modules, les overrides, le thème et tout ce qui a été ajouté « vite fait » au fil des années. Ce guide s’appuie sur de vraies migrations de boutiques de 1.7 vers 8.1 : quoi vérifier avant de commencer, ce qui cesse généralement de fonctionner, dans quel ordre procéder et quoi tester ensuite.

Les versions de PHP tracent le chemin

PrestaShopPHP pris en charge
1.7.87.1 – 7.4
8.0 – 8.27.2.5 – 8.1 (8.1 recommandé)
9.08.1 – 8.4

En pratique : PrestaShop 1.7.8 ne tourne pas sous PHP 8, et PrestaShop 9 ne tourne pas sous PHP 7. L’ordre habituel consiste à mettre la boutique à jour en 8.x sous PHP 7.4, puis seulement à passer PHP en 8.1. On passe en 9 depuis la 8.x, déjà sous PHP 8.1 ou plus récent – ou bien on fait une installation propre de la 9 et on migre les données. Chaque saut de PHP est un test séparé de tous les modules.

Avant de commencer : l’inventaire

-- version de la boutique enregistrée en base
SELECT value FROM ps_configuration WHERE name = 'PS_VERSION_DB';

-- modules installés et leurs versions
SELECT name, version, active FROM ps_module ORDER BY active DESC, name;
# overrides de classes et de contrôleurs – chacun doit être vérifié
find override -name '*.php' ! -name 'index.php'

# fonctions supprimées en PHP 8, dans les modules et les thèmes
grep -rlE 'create_function|each\(|mysql_query|\$[a-zA-Z_]+\{[0-9]' modules themes --include=*.php | head -50

Faites un tableau des résultats : module, fournisseur, existence d’une version pour PrestaShop 8/9, utilité réelle. À ce stade, on découvre souvent que 20 à 30 % des modules peuvent simplement être supprimés.

Ce qui casse le plus souvent

DomaineCe qui se passeQue faire
Modules écrits pour PHP 7Erreur fatale après le changement de PHP : fonctions supprimées, typage plus strict, changements dans la gestion des tableaux et des chaînesNouvelle version de l’auteur ou correction du code ; modules non maintenus – à remplacer
OverridesLes classes du cœur ont reçu des types de retour et des signatures modifiées en 8.0 – un ancien override provoque une erreur fataleRéécrire en hooks ou adapter les signatures ; beaucoup d’overrides se remplacent par un hook
Classe AttributeRenommée ProductAttribute en 8.0Corriger les références dans les modules et overrides
ThèmeInfobulles jQuery UI, identifiants modifiés à l’étape de paiement, thème enfant qui charge les ressources du parentTester le tunnel de commande étape par étape ; dans un thème enfant, vérifier use_parent_assets
Fiche produit du back-officeDepuis la 8.1, la nouvelle fiche produit est activée par défaut sur les nouvelles installations ; lors d’une mise à jour, elle s’active dans « Fonctionnalités nouvelles et expérimentales »Vérifier les modules qui ajoutent des champs à l’édition produit avant de l’activer
Imports et intégrationsLes mots de passe clients et employés doivent être enregistrés hachés – les scripts qui inséraient des mots de passe en clair ne fonctionnent plusCorriger les scripts d’import et les intégrations ERP
Passerelles de paiement et transporteursLes anciennes versions des modules ne fonctionnent pas ou ont des failles non corrigéesDernières versions des prestataires, test de chaque méthode

En plus pour PrestaShop 9

  • Symfony 6.4 et PHP 8.1+. Les modules avec une partie back-office importante (contrôleurs Symfony, formulaires, Twig) demandent une version pour la 9.
  • L’accès direct aux fichiers .php renvoie une erreur 403. Cela touche des « raccourcis » courants dans les modules : ajax.php, cron.php, flux XML maison. Ce code doit passer dans des contrôleurs de module (ModuleFrontController, ModuleAdminController), et les URL des crons et des flux doivent être changées partout où elles sont utilisées.
  • Le mode debug ne s’active que pour un visiteur disposant d’un cookie précis – pratique pour tester en production, à condition de le savoir.
  • Hummingbird, le nouveau thème, n’est pas celui par défaut. Migrer en 9 n’oblige pas à changer de thème.

Un ordre qui fonctionne

  1. Une copie de la boutique sur un sous-domaine de test (fichiers et base), avec les e-mails clients désactivés et les paiements en mode test.
  2. Le ménage : désinstallez les modules inutilisés et supprimez les overrides superflus dès la 1.7.
  3. La mise à jour du cœur avec le module de mise à jour (1-Click Upgrade) ou une installation propre avec migration des données – pour les boutiques très modifiées, la seconde option est souvent plus rapide.
  4. Le passage de PHP et les corrections de modules jusqu’à des journaux (var/logs) sans erreur.
  5. Les tests de la liste ci-dessous, puis un gel des modifications en production et la bascule.

Tests après migration

  • Une commande avec chaque moyen de paiement et de livraison, les e-mails au client et à la boutique, les factures.
  • Compte client : inscription, connexion avec un ancien mot de passe, réinitialisation.
  • URL des produits et catégories inchangées – ou redirections 301.
  • Crons, flux produits, intégrations ERP et transporteurs.
  • Index de recherche et régénération des miniatures.
  • Back-office : édition d’un produit avec déclinaisons, commandes, retours.

Une migration PrestaShop sans interruption

Chez CodeTheWeb, nous migrons PrestaShop 1.7 vers 8 et 9 : inventaire des modules, réécriture des overrides en hooks, adaptation des modules sur mesure à PHP 8 et Symfony, tests sur une copie et bascule en production. Décrivez-nous votre boutique – nous répondrons avec un plan et une estimation.

Nous contacter

Vous hésitez encore à mettre à jour ? Lisez : PrestaShop 1.7 en 2026 : rester ou mettre à jour.

Sources

← Tous les articles

Formulaire de contact

Module concerné : demande générale