Le WordPress d'aujourd'hui, décodé pour les développeurs

Hébergement & serveurs

PHP 8.1 chez un hébergeur mutualisé : les extensions qui cassent encore

L'hébergeur bascule le PHP par défaut vers 8.1 sans prévenir : liste des erreurs de compatibilité rencontrées sur un parc de sites clients, classées par impact.

Par WordPress Développement • 21 juin 2022 • 4 min de lecture • Aucun commentaire
PHP 8.1 chez un hébergeur mutualisé : les extensions qui cassent encore

Un e-mail générique de l’hébergeur mutualisé, annonçant que « la version PHP par défaut passera à 8.1 le mois prochain sauf configuration contraire », a suffi à déclencher un audit préventif complet sur l’ensemble d’un parc de soixante sites clients. Ce genre de bascule automatique, fréquente chez les hébergeurs mutualisés qui alignent leurs comptes sur la dernière version stable pour des raisons de support, ne laisse souvent que quelques semaines de préavis avant application effective.

Sur PHP 8.1, plusieurs changements de comportement, introduits en continuité de PHP 8.0, créent des erreurs de compatibilité sur des extensions ou du code personnalisé qui fonctionnaient sans problème jusque-là. Voici, classées par impact réel observé sur ce parc, les erreurs rencontrées et comment les anticiper avant que l’hébergeur n’impose la bascule.

Impact fort : les propriétés dynamiques dépréciées

PHP 8.1 introduit une dépréciation des propriétés dynamiques sur les classes qui n’étendent pas stdClass et qui n’implémentent pas __get et __set. Du code ancien qui assigne une propriété non déclarée directement sur un objet génère désormais un avertissement de dépréciation, visible si WP_DEBUG_DISPLAY est activé, ce qui casse visuellement certaines pages en environnement de test.

class Commande_Client {
    public $montant;
}

$commande = new Commande_Client();
$commande->statut = 'payee'; // Propriété non déclarée : dépréciation en 8.1

Sur ce parc, cette erreur est apparue sur trois extensions maison anciennes, corrigées en déclarant explicitement chaque propriété utilisée dans la classe concernée.

Impact modéré : les callables sous forme de chaîne

L'essentiel à retenir : Les propriétés dynamiques dépréciées cassent silencieusement certaines extensions anciennes ; Les fonctions passées en chaîne de caractères (callables) posent problème sur des hooks anciens ; Un audit préventif du parc évite la découverte des erreurs en pleine navigation client

Certains hooks WordPress anciens, notamment dans des thèmes développés avant l’adoption généralisée des closures, utilisent des callables sous forme de chaîne de caractères combinée à une syntaxe de classe statique aujourd’hui dépréciée. PHP 8.1 émet un avertissement, sans casser l’exécution dans la majorité des cas, mais ce comportement doit être surveillé de près, certaines futures versions de PHP pouvant durcir ce traitement.

add_action( 'init', 'Mon_Theme::initialiser' ); // Syntaxe à moderniser
add_action( 'init', array( 'Mon_Theme', 'initialiser' ) ); // Forme robuste

Impact faible mais fréquent : le tri de tableaux avec des valeurs nulles

Plusieurs extensions de filtrage de produits WooCommerce ancienne génération utilisaient des fonctions de tri de tableau (usort, uasort) avec des callbacks qui retournaient parfois une valeur nulle implicite en cas de comparaison incomplète. PHP 8.1 traite ce cas plus strictement, générant des avertissements en cascade sur les pages de catalogue produit les plus chargées en filtres.

  • Vérifier chaque callback de tri personnalisé pour garantir un retour entier explicite dans tous les cas
  • Prêter une attention particulière aux extensions de filtre à facettes, souvent concernées
  • Tester la page catalogue avec le nombre maximal de filtres actifs simultanément

La méthode d’audit appliquée sur le parc

Chaque site du parc a été dupliqué sur un environnement de test avec PHP 8.1 déjà actif, puis parcouru avec WP_DEBUG_LOG activé pendant une navigation type reproduisant les parcours les plus fréquents (catalogue, panier, back-office). Le fichier debug.log généré a ensuite été analysé pour repérer les occurrences des trois familles d’erreurs décrites plus haut, avant correction ciblée extension par extension.

Un audit de compatibilité PHP réalisé site par site, plutôt qu’une vérification générique sur un seul environnement de référence, reste la seule méthode fiable sur un parc hétérogène où chaque client utilise sa propre combinaison d’extensions et de personnalisations.

En résumé

La bascule vers PHP 8.1 imposée par un hébergeur mutualisé révèle typiquement trois familles de régressions sur un parc de sites clients anciens : propriétés dynamiques dépréciées, callables sous forme de chaîne obsolète et callbacks de tri insuffisamment stricts. Un audit préventif site par site, mené sur un environnement de test avant la date de bascule annoncée, permet de corriger ces points sans qu’aucun client ne découvre l’incident en pleine navigation sur son propre site.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi