Votre hébergeur vous a prévenu, ou pas : votre site tourne désormais sous PHP 8. Depuis, des messages d'erreur s'affichent en haut des pages, une fonction ne marche plus, ou le site est blanc. En général, ce n'est pas un piratage mais une incompatibilité de code. Voici les erreurs les plus fréquentes et ce qu'elles veulent dire. La démarche complète est sur notre page site en panne après un changement de PHP.
Pourquoi les hébergeurs changent de version
Chaque version de PHP reçoit des correctifs de sécurité pendant une durée limitée. Au-delà, les failles découvertes ne sont plus corrigées. Les hébergeurs basculent donc régulièrement les sites vers une version maintenue. C'est une bonne chose pour la sécurité, mais le code écrit pour une ancienne version peut ne plus fonctionner.
Les messages les plus courants
« Deprecated »
Ce n'est pas encore une panne : PHP prévient qu'une façon d'écrire le code sera supprimée dans une version future. Le site fonctionne, mais le message ne doit pas s'afficher sur le site public. On corrige le code, et en attendant on désactive l'affichage des erreurs (la constante WP_DEBUG_DISPLAY sur WordPress).
Exemple fréquent depuis PHP 8.2 : « Creation of dynamic property is deprecated », lié à du code ancien qui ajoute des propriétés à la volée.
« Fatal error: Uncaught Error: Call to undefined function »
Une fonction n'existe plus. Les cas classiques : create_function(), each() ou money_format(), supprimées en PHP 8. Elles se trouvent souvent dans des thèmes ou des extensions qui n'ont pas été mis à jour depuis des années.
« Uncaught TypeError »
PHP 8 est plus strict sur les types de données. Par exemple, count() appliqué à autre chose qu'un tableau provoquait un simple avertissement avant ; c'est désormais une erreur fatale. Même chose pour certaines fonctions qui recevaient une valeur vide.
« Uncaught ArgumentCountError »
Une fonction est appelée avec un nombre de paramètres qui ne correspond plus. Fréquent avec du code sur mesure écrit il y a longtemps.
Que faire
- Identifier le fichier en cause : le message d'erreur donne son chemin et sa ligne. Un chemin dans wp-content/plugins/nom-extension désigne l'extension fautive.
- Mettre à jour l'élément concerné s'il existe une version récente.
- Le remplacer s'il est abandonné : une extension non maintenue depuis des années est aussi un risque de sécurité.
- Corriger le code quand il s'agit d'un thème ou d'un développement sur mesure.
- En dernier recours, revenir temporairement à la version précédente de PHP depuis l'espace de l'hébergeur, le temps de corriger. Ce n'est qu'un sursis : l'ancienne version ne reçoit plus de correctifs.
Et si c'est une page blanche ?
Une page blanche après un changement de PHP est presque toujours une erreur fatale masquée. Le journal d'erreurs de l'hébergeur la révèle. Voyez aussi notre article sur l'erreur 500 pour distinguer une panne d'un piratage.
Nous corrigeons ce type d'incompatibilité dans le cadre d'un dépannage à partir de 120 €. Si tout le thème est à reprendre, on vous fait un devis après un diagnostic gratuit.