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

Passer PrestaShop à PHP 8

Aucune version de la branche PrestaShop 1.7, de 1.7.0 à 1.7.8, ne fonctionne sous PHP 8. Quand un hébergeur retire progressivement PHP 7 de son offre, une boutique encore en 1.7 se retrouve devant un choix qui n’a rien d’un simple réglage : migrer la version de PrestaShop, ou rester sur une version de PHP non maintenue.

Décrire mon problème Discuter sur WhatsApp

Pourquoi ce n’est jamais juste un réglage côté hébergeur

Sur une installation PrestaShop 1.7, forcer PHP 8 dans les réglages de l’hébergement ne fonctionne pas : Smarty, le moteur de template utilisé par 1.7, plante immédiatement. La version 1.7.8, la plus récente de la branche, ne supporte au mieux que PHP 7.4. Il n’existe donc aucune combinaison possible entre PrestaShop 1.7 et PHP 8 : ce n’est pas un problème de configuration à ajuster, c’est une incompatibilité de fond entre le code de la version et le langage qui l’exécute.

La compatibilité arrive avec PrestaShop 8.0, qui introduit la prise en charge de PHP 8.0 et 8.1, avec PHP 7.2.5 comme minimum requis pour cette version. PrestaShop 8.2, sorti en septembre 2024, ajoute la prise en charge complète de PHP 8.2. PrestaShop 9.0, plus récent, exige PHP 8.1 au minimum et prend en charge PHP 8.2, 8.3 et 8.4. Passer à PHP 8 suppose donc d’abord de migrer PrestaShop lui-même vers la version 8 au minimum, avant même de parler de configuration serveur.

Le sujet ne s’arrête pas à la version de PrestaShop

Une fois PrestaShop lui-même compatible avec PHP 8, le travail n’est pas terminé pour autant. Beaucoup de modules plus anciens utilisent une syntaxe d’accès aux tableaux ou aux chaînes avec des accolades, du type $array{0} au lieu de $array[0]. Cette syntaxe a été supprimée en PHP 8 et provoque une erreur fatale si un module l’utilise encore. Chaque module tiers doit donc être vérifié, et parfois corrigé, indépendamment de sa déclaration officielle de compatibilité avec la version de PrestaShop installée : un module peut se dire compatible PrestaShop 8 tout en contenant encore ce genre de syntaxe héritée.

C’est pour ça que la migration se joue en deux temps distincts : d’abord la version de PrestaShop, ensuite une vérification module par module de la compatibilité réelle avec PHP 8, pas seulement déclarative.

  • 1.7.0 → 1.7.8 aucune version ne fonctionne sous PHP 8
  • PHP 7.4 version PHP la plus récente supportée par PrestaShop 1.7.8
  • PrestaShop 8.0 minimum PHP 7.2.5, prise en charge de PHP 8.0 et 8.1 ; PHP 8.2 à partir de la 8.2
  • PrestaShop 9.0 minimum PHP 8.1, prise en charge jusqu’à PHP 8.4

Documentation officielle PrestaShop

Comment je procède

  1. Vérifier la version PrestaShop actuelle

    Je détermine la version installée et la compare aux versions PHP qu’elle supporte réellement, pas à celles annoncées par l’hébergeur.

  2. Migrer PrestaShop d’abord

    Si la boutique est encore en 1.7, je migre vers la version 8 au minimum sur une copie de test, sans toucher au serveur de production.

  3. Copier l’environnement et forcer PHP 8

    Sur cette copie, je fais pointer l’exécution vers PHP 8 pour observer les erreurs réelles avant tout passage en production.

  4. Vérifier chaque module tiers

    Je passe en revue les modules installés, je repère les syntaxes obsolètes comme les accès aux tableaux avec accolades, et je corrige ou remplace ce qui bloque.

  5. Basculer en production une fois validé

    La bascule vers PHP 8 côté hébergeur n’intervient qu’après validation complète sur la copie, jamais en amont.

Savoir si votre hébergeur prévoit de retirer une version de PHP

Le retrait d’une version de PHP par un hébergeur est presque toujours annoncé à l’avance, généralement par e-mail ou dans une notification visible depuis le panneau d’administration de l’hébergement. Ces annonces donnent en général une date limite avant laquelle il faut avoir changé de version. C’est ce délai qu’il faut utiliser pour migrer PrestaShop dans de bonnes conditions, plutôt que d’attendre que le changement soit imposé du jour au lendemain.

Pour aller plus loin

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.

Quelle est la version actuelle ?
Vers quelle version souhaitez-vous aller ?
Quelle est la taille du catalogue ?

C’est le premier facteur de durée d’une migration, avant même le nombre de modules.

La boutique utilise-t-elle beaucoup de modules tiers ou personnalisés ? (facultatif)

Chaque module non natif doit être vérifié, remplacé ou réécrit pour la version cible.

Qu’est-ce qui doit impérativement être conservé ? (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

Puis-je juste demander à mon hébergeur d’activer PHP 8 sur ma boutique en 1.7 ?
Non. Aucune version de PrestaShop 1.7 ne fonctionne sous PHP 8, Smarty plante immédiatement. Il faut d’abord migrer PrestaShop vers la version 8 au minimum avant d’envisager PHP 8.
Quelle version de PHP dois-je viser selon ma version de PrestaShop ?
PrestaShop 1.7.8, la plus récente de sa branche, se limite à PHP 7.4. PrestaShop 8 accepte PHP 7.2.5 au minimum, avec prise en charge de PHP 8.0, 8.1 et, à partir de la 8.2, de PHP 8.2. PrestaShop 9 exige PHP 8.1 au minimum et prend en charge jusqu’à PHP 8.4.
Une fois PrestaShop migré, mes modules fonctionneront-ils automatiquement sous PHP 8 ?
Pas forcément. Certains modules anciens utilisent une syntaxe d’accès aux tableaux avec accolades, supprimée en PHP 8. Chaque module doit être vérifié individuellement, même s’il se déclare compatible avec la version de PrestaShop installée.
Comment savoir si mon hébergeur va bientôt retirer PHP 7 ?
Ce genre de retrait est généralement annoncé à l’avance, par e-mail ou via une notification dans le panneau d’administration de l’hébergement, avec une date limite indiquée.
Comment tester la compatibilité PHP 8 sans risquer la boutique en ligne ?
Je travaille sur une copie complète de la boutique, où je force l’exécution en PHP 8 pour observer les erreurs réelles et corriger ce qui bloque, avant toute bascule sur le serveur de production.