PHP doit utiliser une classe, un modèle d’objet défini dans le code, qu’il ne trouve dans aucun fichier chargé. Soit l’extension qui la fournit est désactivée ou incomplète, soit c’est une classe de PHP lui-même dont l’extension n’est pas activée sur le serveur, comme ZipArchive ou SoapClient. Le nom entre guillemets indique laquelle manque.
Pourquoi cette erreur apparaît
- Un module complémentaire est actif alors que l’extension principale dont il dépend (WooCommerce, Elementor…) est désactivée.
- Des fichiers manquent après une mise à jour interrompue ou un transfert incomplet, notamment le dossier vendor d’une extension.
- Une extension de PHP n’est pas activée : zip pour ZipArchive, soap pour SoapClient, intl pour NumberFormatter, imagick pour Imagick.
- Après un déménagement vers un serveur Linux, un nom de fichier n’a plus les majuscules attendues par le code.
- Un code personnalisé utilise la classe d’une extension avant que celle-ci soit chargée.
Comment corriger le problème
Repérer d’où vient la classe
Le nom entre guillemets est la clé. Dans ElementorWidget_Base, la partie avant la barre oblique inversée nomme souvent l’éditeur ; WC_ renvoie à WooCommerce. ZipArchive, SoapClient, DOMDocument, NumberFormatter ou Imagick sont des classes de PHP, fournies par des extensions du serveur.
Réactiver l’extension principale
Si un module complémentaire réclame une classe de WooCommerce ou d’Elementor, vérifiez que l’extension principale est installée, active et à jour. Si l’administration est bloquée, renommez par FTP le dossier du module, réactivez l’extension principale, puis rendez son nom au dossier.
Réinstaller une extension incomplète
Si la classe appartient à l’extension citée dans le chemin, ses fichiers sont sans doute incomplets. Téléchargez une copie neuve depuis sa source officielle, renommez l’ancien dossier, puis envoyez le nouveau par FTP. Les réglages, enregistrés dans la base, sont conservés.
Activer l’extension PHP manquante
Pour une classe de PHP, cochez l’extension correspondante (zip, soap, intl, xml, imagick) dans le sélecteur de version PHP de l’hébergement, ou demandez-la au support. Sur un VPS sous Debian ou Ubuntu, installez le paquet adapté à votre version de PHP puis redémarrez PHP.
sudo apt install php8.3-zip php8.3-soap php8.3-intl
sudo systemctl restart php8.3-fpm
Vérifier majuscules et ordre de chargement
Après une migration depuis Windows ou macOS, comparez les noms de fichiers avec ceux attendus par le code : Linux distingue Class-Loader.php de class-loader.php. Dans un mu-plugin, le code s’exécute avant les extensions classiques : attendez le hook plugins_loaded et testez la présence de la classe.
add_action( 'plugins_loaded', function () {
if ( class_exists( 'WooCommerce' ) ) {
// votre code
}
} );
Sauvegardez le site et gardez l’ancien dossier de l’extension, simplement renommé, jusqu’à ce que la nouvelle copie fonctionne.
Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.
Ouvrir le décodeur