Aller au contenu
WooRescueHQ

WooCommerce / Erreurs

Erreur fatale WooCommerce : guide de dépannage pratique

Réponse courte

Le message vu par les clients est générique ; la vraie erreur se trouve dans un journal. Cherchez dans WooCommerce → État → Journaux (fatal-errors), le journal d’erreurs PHP ou wp-content/debug.log. Lisez quatre éléments : le type d’erreur et le message, le chemin du fichier (quelle extension, quel thème ou quel code sur mesure), la trace (comment WooCommerce est arrivé à ce code) et l’horodatage (quel changement l’a déclenchée). Corrigez ou revenez en arrière sur ce composant, pas sur WooCommerce dans son ensemble.

Symptômes

  • Il y a eu une erreur critique sur ce site sur la boutique, les fiches produit, le checkout ou l’administration.
  • Un écran blanc ou une réponse HTTP 500.
  • Un checkout qui tourne sans fin parce que sa requête échoue avec une 500.
  • Un e-mail à l’administrateur du site intitulé Votre site rencontre un problème technique.

Causes les plus fréquentes

Message d’erreur Cause typique
Uncaught TypeError: Unsupported operand types: string + float Du code sur mesure qui calcule avec une valeur qui n’est pas un nombre ; plus strict sous PHP 8
Call to a member function get_id() on bool / on null Le code suppose que wc_get_order() ou wc_get_product() a trouvé quelque chose
Call to undefined function … Une extension requise est inactive ou a été mise à jour sans sa dépendance
Cannot redeclare … / Cannot declare class … Le même snippet à deux endroits, ou deux extensions qui embarquent la même bibliothèque
Allowed memory size of … bytes exhausted Une boucle ou une requête qui charge beaucoup trop de données, ou une tâche réellement lourde
Maximum execution time of … seconds exceeded Un appel externe ou une requête lente, souvent dans le checkout ou un import
Class "…" not found Une mise à jour incomplète, un autoloader cassé ou une dépendance Composer manquante

Diagnostic

1. Récupérez l’erreur complète

Par ordre de commodité :

  1. L’e-mail que WordPress envoie à l’administrateur quand il intercepte une erreur fatale.
  2. WooCommerce → État → Journaux, source fatal-errors.
  3. Le journal d’erreurs PHP dans le panneau de l’hébergeur.
  4. wp-content/debug.log, après avoir activé la journalisation :
PHPwp-config.php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );      // ou un chemin hors de la racine web
define( 'WP_DEBUG_DISPLAY', false ); // n’affichez jamais les erreurs aux clients
@ini_set( 'display_errors', '0' );

2. Lisez-la en quatre parties

Log
PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string + float
  in /var/www/wp-content/plugins/custom-fees/custom-fees.php:142
Stack trace:
#0 /var/www/wp-includes/class-wp-hook.php(324): add_custom_fee(Object(WC_Cart))
#1 /var/www/wp-includes/plugin.php(205): WP_Hook->apply_filters(...)
#2 /var/www/wp-content/plugins/woocommerce/includes/class-wc-cart.php(...): do_action('woocommerce_cart_calculate_fees', ...)
  • Type et message : un TypeError, donc des types incorrects, pas un fichier manquant.
  • Fichier et ligne : custom-fees.php:142, une extension sur mesure, pas WooCommerce.
  • Trace : WooCommerce y est arrivé en calculant les frais du panier.
  • Horodatage (dans le préfixe de la ligne du journal) : rapprochez-le de la dernière mise à jour, du dernier déploiement ou du changement de PHP.

3. Rattachez-la à un changement

Regardez ce qui a changé juste avant la première occurrence : mises à jour d’extensions et du thème, nouveau snippet, changement de version de PHP, mise à jour de WooCommerce qui a modifié ce qu’un hook transmet. La plupart des erreurs fatales sont la première exécution d’un nouveau chemin de code après un changement.

Journaux et vérifications techniques

  • Journal fatal-errors, journal d’erreurs PHP, debug.log.
  • WooCommerce → État → État du système : version de PHP, limite de mémoire, versions de WooCommerce et des extensions.
  • Le changelog de l’extension pour la version installée juste avant l’apparition de l’erreur.
  • Pour les erreurs de mémoire : quelle requête, à quelle fréquence, et ce qu’elle chargeait.

Solutions

  • Revenez à la version précédente du composant qui a introduit l’erreur, comme solution provisoire, le temps de préparer la vraie correction.
  • Corrigez le code de façon défensive : vérifiez les valeurs de retour, convertissez les types et gérez les commandes ou produits introuvables.
  • Mettez à jour les extensions incompatibles avec les versions actuelles de PHP et de WooCommerce, ou remplacez celles qui sont abandonnées.
  • Supprimez les doublons : le même snippet dans une extension de snippets et dans functions.php, ou deux extensions qui embarquent des bibliothèques en conflit.
  • Pour les limites de temps et de mémoire, corrigez ce qui est lent ou lourd ; n’augmentez les limites que pour des tâches lourdes légitimes, idéalement en arrière-plan.
PHPcustom-fees/custom-fees.php
// Avant : erreur fatale quand get_option() renvoie une chaîne
$fee = $cart->get_subtotal() * get_option( 'handling_rate' );

// Après : types explicites, et rien à ajouter si le taux n’est pas défini
$rate = (float) get_option( 'handling_rate', 0 );
if ( $rate > 0 ) {
    $cart->add_fee( __( 'Frais de gestion', 'my-store' ), $cart->get_subtotal() * $rate );
}

Ce qu’il ne faut pas faire

  • N’activez pas l’affichage des erreurs sur une boutique en production ; journalisez-les.
  • Ne modifiez pas les fichiers d’une extension tierce en production. La modification disparaît à la prochaine mise à jour et personne ne sait qu’elle existe.
  • Ne réinstallez pas WooCommerce et ne restaurez pas une ancienne sauvegarde sans connaître la cause : vous risquez de perdre des commandes et de garder le bug.
  • Ne supprimez pas le journal après l’avoir lu ; vous en aurez besoin pour confirmer la correction.

Quand faire appel à un expert

Faites appel à un ingénieur quand l’erreur se trouve dans du code sur mesure ou une extension premium que vous ne pouvez pas modifier sans risque, quand elle est intermittente, quand elle est apparue dans de nombreux fichiers après une mise à jour de PHP, ou quand elle bloque le checkout ou l’administration en ce moment.

Questions fréquentes

Que signifie « Il y a eu une erreur critique sur ce site » ?

WordPress a intercepté une erreur fatale PHP et a arrêté l’affichage de la page. L’administrateur reçoit généralement un e-mail avec des détails et un lien vers le mode de récupération. L’erreur exacte se trouve dans les journaux PHP ou WooCommerce.

Comment activer la journalisation de débogage de WordPress sans risque ?

Mettez WP_DEBUG et WP_DEBUG_LOG à true et WP_DEBUG_DISPLAY à false dans wp-config.php. Les erreurs sont écrites dans wp-content/debug.log (ou dans un chemin de votre choix) et ne sont jamais affichées aux visiteurs. Désactivez-la une fois terminé.

Faut-il augmenter la limite de mémoire PHP ?

Seulement si l’erreur est « Allowed memory size exhausted » et que l’opération a réellement besoin de plus de mémoire, comme un gros import. Si une page ordinaire épuise la mémoire, quelque chose tourne en boucle ou charge beaucoup trop de données.

Pourquoi l’erreur est-elle apparue après une mise à jour de PHP ?

PHP 8 est plus strict : des opérations qui produisaient des avertissements sous PHP 7 (calculs sur des chaînes, mauvais types d’arguments, fonctions non définies) lèvent désormais des erreurs. Les anciennes extensions et le code sur mesure sont les coupables habituels.

$ décrivez le problème

Un problème avec WooCommerce ?Demandez un diagnostic.

Dites-nous ce qui ne fonctionne pas, ce qui a changé récemment et l'impact sur votre activité. Nous examinons chaque demande et vous recommandons la marche à suivre.

Demander un diagnostic Voir les services et les tarifs

N'envoyez jamais de mots de passe, de clés API ni de données de carte via le formulaire.

Diagnostic à partir de299 €

Demander un diagnostic