# Erreur critique WordPress : « Il y a eu une erreur critique »

> « Il y a eu une erreur critique sur ce site » : trouvez l’extension ou le thème fautif (mode de récupération, journaux, WP-CLI) et rétablissez le site.

- Auteur : WordPress Développement
- Publié le : 2026-10-02
- Mis à jour le : 2026-10-02
- URL : https://www.wpmoderne.fr/erreurs-wordpress/erreur-critique/

> Une erreur fatale PHP, presque toujours causée par une extension ou un thème, a interrompu le site. Ouvrez le lien du mode de récupération reçu par e-mail, ou renommez le dossier de l’extension fautive par SFTP.

Vous ouvrez votre site, ou votre tableau de bord, et une page presque vide remplace le contenu habituel : une phrase, un lien « En apprendre plus sur le débogage de WordPress » et rien d’autre. C’est la **page d’erreur critique** de WordPress. Elle peut apparaître sur le site public, dans l’administration, ou sur les deux à la fois, et elle s’accompagne d’un code HTTP 500. Elle signifie qu’un code PHP s’est arrêté net, avant d’avoir pu produire la page demandée.

La bonne nouvelle : vos contenus et votre base de données ne sont pas touchés. Le problème vient d’un fichier de code : il suffit de l’identifier, puis de le désactiver, le mettre à jour ou le corriger. Voici la marche à suivre, même sans accès à l’administration.

## Ce que signifie cette erreur

Depuis WordPress 5.2, le cœur enregistre une fonction de fin d’exécution qui surveille les arrêts brutaux de PHP. Elle est déclarée dans `wp-settings.php` (appel à `wp_register_fatal_error_handler()`) avant le chargement des extensions, puis exécutée par la classe `WP_Fatal_Error_Handler`, dans `wp-includes/class-wp-fatal-error-handler.php`. Quand PHP s’arrête sur une erreur fatale, ce gestionnaire remplace l’écran blanc par un message lisible.

Les erreurs prises en charge sont `E_ERROR`, `E_PARSE`, `E_USER_ERROR`, `E_COMPILE_ERROR` et `E_RECOVERABLE_ERROR`. Concrètement : une erreur de syntaxe, une fonction ou une classe introuvable, une exception non attrapée, une mémoire épuisée. Un avertissement ou une notice ne la déclenche pas.

Le texte affiché dépend du contexte :

- sur le site public : « Il y a eu une erreur critique sur ce site. » ;
- dans l’administration ou sur la page de connexion : « Il y a eu une erreur critique sur ce site. Veuillez vérifier la boîte de réception de votre e-mail d’administration pour obtenir des instructions. » ;
- si le mode de récupération est déjà actif : « Il y a eu une erreur critique sur ce site, activant ainsi le mode de récupération. Veuillez vérifier les pages des thèmes et des extensions pour plus de détails. » ;
- sur un multisite : « Une erreur critique s’est produite sur ce site. Veuillez contacter l’admin de votre site et l’informer de cette erreur pour obtenir de l’aide. » (le mode de récupération par e-mail n’existe pas en multisite).

Lorsque l’erreur provient d’une extension ou d’un thème, WordPress le **met en pause** et envoie un e-mail à l’adresse d’administration du site (option `admin_email`, ou la constante `RECOVERY_MODE_EMAIL` si vous l’avez définie). Cet e-mail a pour objet « [Nom du site] Votre site connaît un problème technique », contient le détail de l’erreur (fichier et ligne) et un lien d’accès au mode de récupération. Par défaut, un seul e-mail part par jour.

Le gestionnaire ne peut rien faire si l’erreur survient avant son enregistrement, par exemple une faute de syntaxe dans `wp-config.php`. Dans ce cas, vous verrez plutôt un [écran blanc](https://www.wpmoderne.fr/erreurs-wordpress/ecran-blanc/).

## Diagnostic rapide

| Symptôme / constat | Cause probable | À vérifier |
| --- | --- | --- |
| L’erreur est apparue juste après l’activation ou la mise à jour d’une extension | Extension incompatible ou buggée | L’e-mail de récupération, puis le dossier de l’extension dans `wp-content/plugins/` |
| Elle suit un changement de thème ou une modification de `functions.php` | Erreur de code dans le thème | Le thème actif ; l’éditeur de code ou le dernier fichier modifié |
| Elle apparaît après un changement de version de PHP chez l’hébergeur | Code incompatible avec la nouvelle version | La version de PHP et le journal `debug.log` |
| Le front est cassé mais l’administration fonctionne (ou l’inverse) | Code chargé seulement d’un côté | Les extensions ou gabarits propres au front ou à l’admin |
| Aucun e-mail reçu | Courrier bloqué ou adresse d’admin obsolète, ou erreur hors extension/thème | Les indésirables, l’option `admin_email` et le journal d’erreurs |
| Le message mentionne la mémoire dans le journal | Limite `memory_limit` dépassée | La fiche mémoire épuisée |

## Les causes les plus fréquentes

1. **Une extension** mise à jour, nouvellement activée ou devenue incompatible avec votre version de PHP ou de WordPress.
2. **Un conflit entre deux extensions**, ou entre une extension et le thème.
3. **Un thème** ou un snippet PHP collé dans `functions.php` avec une faute de syntaxe ou un appel de fonction inexistant.
4. **Un changement de version de PHP** qui rend un code ancien invalide.
5. **Une mémoire PHP insuffisante** pour une page, un import ou une tâche planifiée.
6. **Une mise à jour interrompue** ou des fichiers du cœur incomplets ou corrompus.

## Solutions pas à pas

Avant toute manipulation de fichiers, faites une sauvegarde de `wp-content/` et de la base de données si vous le pouvez. Du moins invasif au plus technique :

### 1. Utiliser le lien du mode de récupération

À appliquer en premier lorsque vous avez accès à la boîte mail de l’administrateur. Cherchez le message « Votre site connaît un problème technique » (vérifiez les indésirables). Il indique l’extension ou le thème en cause, le fichier et la ligne.

1. Cliquez sur le lien du mode de récupération contenu dans l’e-mail.
2. Connectez-vous avec un compte administrateur : vous êtes alors en mode de récupération.
3. Ouvrez *Extensions > Extensions installées* : l’extension concernée est signalée comme mise en pause (« Cette extension n’a pas pu se charger correctement et a été mise en pause dans le cadre du mode de récupération »).
4. Désactivez-la, mettez-la à jour ou supprimez-la. Faites de même avec le thème si c’est lui qui est indiqué.
5. Cliquez sur « Sortir du mode de récupération » dans la barre d’administration.

Le lien reste valable au moins un jour. Vérifiez en rechargeant le site en navigation privée.

### 2. Lire le message exact dans le journal d’erreurs

Si aucun e-mail n’est arrivé, c’est le journal qui vous donnera la cause. Ajoutez ces lignes dans `wp-config.php`, **au-dessus** de la ligne « That’s all, stop editing! » :

```
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
```

Rechargez la page en erreur, puis lisez la fin de `wp-content/debug.log` :

```
tail -n 30 wp-content/debug.log
```

Repérez la ligne « PHP Fatal error » : elle donne le chemin du fichier fautif. Le dossier situé sous `wp-content/plugins/` ou `wp-content/themes/` vous désigne le coupable. Supprimez ces trois lignes (ou passez `WP_DEBUG` à `false`) une fois le problème réglé, et ne laissez pas `debug.log` accessible publiquement. Nginx :

```
location = /wp-content/debug.log {
    deny all;
}
```

Apache (dans le `.htaccess` de la racine ou de `wp-content/`) :

```
<Files "debug.log">
    Require all denied
</Files>
```

Pour aller plus loin dans la lecture des journaux, consultez notre article [WP_DEBUG_LOG : les bons réflexes pour déboguer WordPress](https://www.wpmoderne.fr/tips/wp-debug-log-bons-reflexes-debogage-wordpress/).

### 3. Désactiver l’extension fautive sans accès à l’administration

Par SFTP ou par le gestionnaire de fichiers de l’hébergeur, renommez le dossier de l’extension désignée :

```
wp-content/plugins/nom-de-l-extension  →  wp-content/plugins/nom-de-l-extension.off
```

WordPress ne la trouvera plus et la désactivera. Si vous disposez de WP-CLI :

```
wp plugin list --status=active
wp plugin deactivate nom-de-l-extension
```

Si vous ignorez laquelle est en cause, désactivez-les toutes d’un coup, puis réactivez-les une à une en testant le site après chaque activation :

```
wp plugin deactivate --all
wp plugin activate nom-de-l-extension
```

Sans WP-CLI, renommez le dossier `plugins` en `plugins.off` : toutes les extensions sont désactivées. Remettez ensuite son nom d’origine au dossier et réactivez les extensions une par une depuis l’administration.

Dernier recours, depuis phpMyAdmin et **après sauvegarde de la base** (adaptez le préfixe `wp_` à votre installation) :

```
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
```

### 4. Revenir à un thème par défaut

Si le journal désigne un fichier du thème, renommez de la même façon le dossier du thème actif dans `wp-content/themes/`. WordPress bascule alors sur un thème par défaut, à condition qu’il soit installé. Avec WP-CLI :

```
wp theme list
wp theme activate slug-du-theme-par-defaut
```

Rétablissez ensuite le thème après correction du code. Si l’erreur venait d’un snippet ajouté à `functions.php`, retirez-le ou corrigez-le par SFTP. Notre article sur l’[éditeur de code désactivé](https://www.wpmoderne.fr/themes/editeur-code-desactive-reactiver-urgence/) explique comment modifier un fichier en urgence sans risque.

### 5. Corriger l’incompatibilité de version de PHP

Si l’erreur est apparue juste après un changement de version de PHP, repassez temporairement à la version précédente depuis le panneau de votre hébergeur, vérifiez que le site revient, puis mettez à jour l’extension ou le thème avant de retenter la montée de version. La version utilisée figure dans *Outils > Santé du site > Info > Serveur*.

### 6. Réparer les fichiers du cœur

Si le journal cite un fichier de `wp-includes/` ou `wp-admin/`, le cœur est probablement incomplet. Après sauvegarde, comparez les fichiers avec les sommes de contrôle officielles, puis réinstallez le cœur sans toucher au contenu :

```
wp core verify-checksums
wp core download --force --skip-content
```

## Prévenir l’erreur

- **Testez les mises à jour sur un double du site** avant de les appliquer en production, surtout pour les extensions majeures et les changements de version de PHP.
- **Gardez une adresse d’administration valide** et lisible : c’est elle qui reçoit le lien de récupération. Vous pouvez la fixer avec `define( 'RECOVERY_MODE_EMAIL', 'admin@exemple.fr' );`.
- **Faites des sauvegardes automatiques** et testez leur restauration ; consultez notre article sur les [sauvegardes et le plan de reprise](https://www.wpmoderne.fr/securite/sauvegardes-plan-de-reprise-wordpress/).
- **Évitez de modifier le code en direct** depuis l’administration ; travaillez en local ou en préproduction.

## Questions fréquentes
