Matrice de compatibilité des versions PHP pour PrestaShop (1.6 à 9.x)
Matrice de compatibilité des versions PHP pour PrestaShop
Choisir la bonne version de PHP pour votre boutique PrestaShop est l'une des décisions d'infrastructure les plus critiques que vous prendrez. L'utilisation d'une version PHP incompatible peut provoquer des écrans blancs, des processus de paiement défaillants, des erreurs de modules et des vulnérabilités de sécurité. Ce guide complet couvre chaque version de PrestaShop de 1.6 à 9.x et associe chacune à ses versions PHP prises en charge, configurations recommandées et considérations de mise à jour.
Pourquoi la version PHP est importante pour PrestaShop
PHP est le langage côté serveur qui fait fonctionner PrestaShop. Chaque version majeure de PHP apporte des améliorations de performance, de nouvelles fonctionnalités du langage et déprécie les fonctions plus anciennes. Le code source de PrestaShop évolue en parallèle avec PHP, ce qui signifie que les versions plus récentes de PrestaShop tirent parti des fonctionnalités modernes de PHP tout en abandonnant le support des versions obsolètes.
L'utilisation de la mauvaise version PHP provoque trois catégories de problèmes :
- Erreurs fatales - Les fonctions supprimées dans les nouvelles versions PHP (par exemple, les fonctions
mysql_*supprimées en PHP 7.0,each()supprimée en PHP 8.0) provoquent des plantages immédiats. - Avertissements de dépréciation - Les fonctions dépréciées génèrent des avertissements qui peuvent casser les réponses AJAX, la sortie JSON et la génération de PDF lorsque
display_errorsest activé. - Exposition aux risques de sécurité - Les versions PHP qui ont atteint leur fin de vie ne reçoivent plus de correctifs de sécurité, laissant votre boutique vulnérable.
Matrice de compatibilité complète
PrestaShop 1.6.x
| Version PrestaShop | PHP 5.4 | PHP 5.5 | PHP 5.6 | PHP 7.0 | PHP 7.1 | PHP 7.2+ |
|---|---|---|---|---|---|---|
| 1.6.0.x - 1.6.0.14 | Oui | Oui | Oui | Non | Non | Non |
| 1.6.1.0 - 1.6.1.4 | Oui | Oui | Oui | Partiel | Non | Non |
| 1.6.1.5 - 1.6.1.23 | Oui | Oui | Oui | Oui | Oui | Non |
| 1.6.1.24+ | Oui | Oui | Oui | Oui | Oui | Non |
PHP recommandé pour 1.6.x - PHP 7.1. Il offre le meilleur équilibre entre performance et compatibilité. L'exécution de 1.6.x sur PHP 7.2+ nécessite des modifications de fichiers core qui brisent le chemin de mise à jour et n'est pas recommandée.
PrestaShop 1.7.x
| Version PrestaShop | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0+ |
|---|---|---|---|---|---|
| 1.7.0.x - 1.7.4.x | Oui (recommandé) | Non | Non | Non | Non |
| 1.7.5.x | Oui | Oui (recommandé) | Non | Non | Non |
| 1.7.6.x | Oui | Oui (recommandé) | Oui | Non | Non |
| 1.7.7.x | Oui | Oui | Oui (recommandé) | Partiel | Non |
| 1.7.8.x | Oui | Oui | Oui | Oui (recommandé) | Non |
Avertissement critique - Aucune version de PrestaShop 1.7 ne supporte PHP 8.0 ou ultérieur. Si vous exécutez PS 1.7.6 sur PHP 8, Smarty plantera immédiatement car le moteur de templates utilise des fonctions supprimées en PHP 8.0. La suppression de la fonction each() et les changements dans le fonctionnement de array_key_exists() avec les objets provoquent des erreurs fatales.
PrestaShop 8.x
| Version PrestaShop | PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3 |
|---|---|---|---|---|---|---|---|
| 8.0.0 - 8.0.2 | Oui (min) | Oui | Oui | Oui | Partiel | Non | Non |
| 8.0.3 - 8.0.5 | Oui (min) | Oui | Oui | Oui | Oui (recommandé) | Non | Non |
| 8.1.0 - 8.1.2 | Non | Oui (min) | Oui | Oui | Oui (recommandé) | Partiel | Non |
| 8.1.3 - 8.1.7 | Non | Oui (min) | Oui | Oui | Oui (recommandé) | Oui | Partiel |
PHP recommandé pour 8.x - PHP 8.1. C'est le point idéal offrant une compatibilité complète, un support de sécurité actif et d'excellentes performances avec la compilation JIT. PHP 8.1 apporte les fibres, les enums, les propriétés en lecture seule et les types d'intersection que PrestaShop 8 peut exploiter.
PrestaShop 9.x
| Version PrestaShop | PHP 8.1 | PHP 8.2 | PHP 8.3 | PHP 8.4 |
|---|---|---|---|---|
| 9.0.x | Oui (min) | Oui | Oui (recommandé) | Oui |
PHP recommandé pour 9.x - PHP 8.3 ou 8.4. PrestaShop 9 fonctionne sur Symfony 6.4 LTS et requiert PHP 8.1 comme minimum. PHP 8.4 apporte les Property Hooks et la visibilité asymétrique que les futures mises à jour de PrestaShop exploiteront.
Dates de fin de vie PHP à connaître
| Version PHP | Support actif jusqu'à | Correctifs de sécurité jusqu'à | Statut (2026) |
|---|---|---|---|
| PHP 7.4 | Nov 2021 | Nov 2022 | EOL - Dangereux |
| PHP 8.0 | Nov 2022 | Nov 2023 | EOL - Dangereux |
| PHP 8.1 | Nov 2023 | Déc 2025 | EOL - Migrer bientôt |
| PHP 8.2 | Déc 2024 | Déc 2026 | Sécurité seulement |
| PHP 8.3 | Déc 2025 | Déc 2027 | Sécurité seulement |
| PHP 8.4 | Déc 2026 | Déc 2028 | Support actif |
Si vous utilisez PHP 7.4 ou 8.0 en 2026, vous fonctionnez sur une version non supportée qui ne reçoit plus de correctifs de sécurité. C'est un risque critique pour toute boutique e-commerce traitant des données de paiement.
Comment vérifier votre version PHP actuelle
Méthode 1 - Back Office PrestaShop
Naviguez vers Paramètres avancés > Informations. La section Informations du serveur affiche votre version PHP, ainsi que la limite de mémoire, le temps d'exécution maximum et d'autres paramètres pertinents.
Méthode 2 - Fichier PHP Info
Créez un fichier nommé phpinfo.php dans le répertoire racine de votre boutique avec ce contenu :
<?php phpinfo();Accédez-y via votre navigateur à https://votreboutique.com/phpinfo.php. Supprimez ce fichier immédiatement après vérification - il expose des détails sensibles de configuration du serveur.
Méthode 3 - Ligne de commande
php -v
php -r "echo PHP_VERSION;"Notez que la version PHP CLI peut différer de la version PHP du serveur web. Vérifiez toujours via l'interface web ou phpinfo().
Problèmes courants avec la mauvaise version PHP
Écran blanc de la mort (WSOD)
Le symptôme le plus courant d'incompatibilité PHP. Vérifiez votre journal d'erreurs PHP (généralement à /var/log/php-errors.log ou accessible via votre panneau d'hébergement). Erreurs typiques :
Fatal error: Uncaught Error: Call to undefined function mysql_connect()
Fatal error: Uncaught Error: Call to undefined function each()
Fatal error: Cannot use "parent" when current class scope has no parentLes avertissements de dépréciation cassent AJAX
Lorsque display_errors = On et que vous mettez à jour PHP, les notices de dépréciation sont ajoutées aux réponses AJAX. Cela casse le parsing JSON dans le back office, provoquant l'échec silencieux de fonctionnalités comme la recherche de produits, la recherche de clients et la création de commandes. La solution :
; php.ini
display_errors = Off
log_errors = On
error_log = /chemin/vers/php-error.logIncompatibilité des modules
Les modules tiers peuvent ne pas supporter votre version PHP. Avant de mettre à jour PHP, vérifiez la compatibilité de chaque module installé. Zones problématiques courantes :
- Modules utilisant
create_function()- supprimée en PHP 8.0 - Modules utilisant les fonctions
mysql_*- supprimées en PHP 7.0 - Modules utilisant l'accès positionnel aux chaînes avec accolades
$str{0}- supprimé en PHP 8.0 - Modules ne gérant pas les types de retour nullable - plus strict à partir de PHP 8.1+
Comment mettre à jour PHP pour PrestaShop en toute sécurité
Étape 1 - Auditer votre configuration actuelle
Avant de modifier quoi que ce soit, documentez votre environnement actuel :
php -v # Version PHP actuelle
php -m # Extensions chargées
php -i | grep memory # Limite de mémoire
php -i | grep max_exec # Limite du temps d'exécutionÉtape 2 - Vérifier la compatibilité des modules
Examinez chaque module installé. Consultez la documentation du développeur du module pour le support des versions PHP. Si un module n'a pas été mis à jour depuis plus de deux ans, il est probablement incompatible avec PHP 8.x.
Étape 3 - Tester d'abord en staging
Ne mettez jamais à jour PHP sur votre serveur de production sans test préalable. Créez une copie de staging de votre boutique et testez avec la nouvelle version PHP. Vérifiez :
- Les pages du front office se chargent correctement
- Pages produits, pages catégories, pages CMS
- Le processus de panier et de commande se termine complètement
- Les modules de paiement traitent les transactions de test
- Les fonctionnalités du back office fonctionnent (édition de produits, gestion des commandes)
- Tous les modules tiers fonctionnent correctement
- Les tâches cron s'exécutent sans erreur
Étape 4 - Mise à jour avec plan de retour en arrière
La plupart des hébergeurs vous permettent de changer de version PHP depuis le panneau de contrôle (cPanel, Plesk, DirectAdmin). Gardez la version PHP précédente disponible pour un retour rapide si des problèmes surviennent.
Étape 5 - Vider tous les caches après la mise à jour
Après le changement de version PHP, videz chaque couche de cache :
# Vider le cache PrestaShop
rm -rf var/cache/prod/* var/cache/dev/*
# Vider les templates Smarty compilés
rm -rf var/cache/smarty/compile/* var/cache/smarty/cache/*
# Si vous utilisez OPcache, redémarrer PHP-FPM
systemctl restart php8.3-fpm
# Vider le cache CDN (Cloudflare, etc.)Meilleures pratiques de configuration PHP pour PrestaShop
Quelle que soit la version PHP choisie, ces paramètres sont essentiels pour des performances optimales de PrestaShop :
; paramètres php.ini recommandés
memory_limit = 512M
max_execution_time = 300
max_input_vars = 10000
post_max_size = 32M
upload_max_filesize = 32M
; Paramètres OPcache (critiques pour les performances)
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 32
opcache.max_accelerated_files = 16229
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1
; Extensions requises
extension = intl
extension = zip
extension = gd
extension = curl
extension = mbstring
extension = openssl
extension = pdo_mysql
extension = fileinfoConsidérations pour les développeurs de modules
Si vous développez des modules PrestaShop, vous devez considérer attentivement la compatibilité PHP :
- Version PHP minimum - Ciblez PHP 7.2 comme minimum pour les modules devant fonctionner sur PrestaShop 8.0+, ou PHP 8.1 pour les modules exclusifs à PrestaShop 9.
- Utilisez PHPStan ou Psalm - Les outils d'analyse statique détectent les incompatibilités de version PHP avant vos utilisateurs.
- Évitez la syntaxe spécifique à une version - Les fonctionnalités comme les expressions match (PHP 8.0), les enums (PHP 8.1) et les propriétés readonly (PHP 8.1) limitent votre module à ces versions PHP et supérieures.
- Testez sur plusieurs versions - Utilisez des conteneurs Docker avec différentes versions PHP pour tester votre module sur toute la plage de compatibilité.
Questions fréquemment posées
Puis-je exécuter PrestaShop 1.7 sur PHP 8 ?
Non. Aucune version de PrestaShop 1.7 ne supporte officiellement PHP 8.0 ou ultérieur. Bien que certains utilisateurs aient appliqué des correctifs pour le faire fonctionner partiellement, cela n'est pas supporté et causera des problèmes lors des mises à jour. Le bon chemin est de migrer vers PrestaShop 8.x.
Dois-je utiliser PHP 8.4 avec PrestaShop 8.1 ?
Déconseillé. PrestaShop 8.1 a été développé et testé principalement avec PHP 8.1. Bien que PHP 8.2 soit partiellement supporté dans les versions 8.1.x ultérieures, PHP 8.4 introduit des changements qui peuvent causer des problèmes avec les composants Symfony plus anciens. Restez avec PHP 8.1 pour PrestaShop 8.x.
PHP 8.x est-il beaucoup plus rapide que 7.x ?
Les benchmarks montrent que PHP 8.1 est environ 20-30% plus rapide que PHP 7.4 pour les charges de travail PrestaShop typiques. Le compilateur JIT offre le plus d'avantages pour les tâches de calcul. Pour les opérations liées aux E/S (requêtes de base de données, lectures de fichiers), l'amélioration est plus faible mais néanmoins mesurable.
La mise à jour de PHP nécessite-t-elle une mise à jour de PrestaShop ?
Pas nécessairement, mais les deux vont de pair. Vous pouvez mettre à jour PHP dans la plage supportée pour votre version PrestaShop sans mettre à jour PrestaShop lui-même. Cependant, si vous souhaitez utiliser une version PHP moderne (8.3+), vous aurez besoin de PrestaShop 8.1 ou 9.x.
Cette réponse vous a-t-elle été utile ?
Vous avez encore des questions ?
Can't find what you're looking for? Send us your question and we'll get back to you quickly.