Écran blanc de la mort (page blanche, sans aucun message)
En anglais : White Screen of Death (WSOD)
Réponse rapide
Une erreur PHP fatale s’est produite sans être affichée : le plus souvent une extension ou un thème, parfois la mémoire. Activez WP_DEBUG_LOG pour lire l’erreur, puis désactivez l’extension fautive par SFTP ou WP-CLI.
Vous chargez votre site et il ne s’affiche rien du tout : une page entièrement blanche, sans message, sans erreur. C’est ce que l’on appelle l’écran blanc de la mort, ou WSOD en anglais (White Screen of Death). Il peut toucher tout le site, seulement l’administration, une seule page, ou une fonction précise comme l’éditeur ou un formulaire.
L’écran blanc n’est pas une erreur en soi : c’est l’absence de message. PHP a rencontré un problème, mais n’a pas affiché son erreur. Le but est donc de faire parler le site, puis de corriger ce qu’il dit.
Ce que signifie cette erreur
Quand un script PHP s’arrête sur une erreur fatale, deux choses déterminent ce que vous voyez : l’affichage des erreurs et le gestionnaire d’erreurs de WordPress.
- L’affichage des erreurs : sur un site en production,
display_errorsest coupé. L’erreur est écrite dans un journal (ou nulle part), et le navigateur reçoit une page vide. - Le gestionnaire d’erreurs fatales : depuis WordPress 5.2,
WP_Fatal_Error_Handler(wp-includes/class-wp-fatal-error-handler.php) remplace en général l’écran blanc par la page d’erreur critique. Il est enregistré danswp-settings.phpavant le chargement des extensions et des thèmes.
L’écran blanc subsiste donc dans les cas où ce gestionnaire ne peut pas intervenir :
- l’erreur survient avant son enregistrement, par exemple une faute de syntaxe dans
wp-config.php; - l’erreur n’est pas d’un des types gérés (
E_ERROR,E_PARSE,E_USER_ERROR,E_COMPILE_ERROR,E_RECOVERABLE_ERROR) : unexitou undiesans message, une boucle infinie, un processus tué par le système n’en font pas partie ; - les en-têtes HTTP ont déjà été envoyés en dehors de l’administration, le gestionnaire n’affiche alors rien ;
- la constante
WP_DISABLE_FATAL_ERROR_HANDLERest définie, ou un fichierwp-content/php-error.phpvide remplace le gabarit d’erreur ; - la page est en réalité vide : un cache a gardé une réponse vide, un gabarit ne produit rien, une extension de cache ou d’optimisation a cassé le rendu.
Diagnostic rapide
| Symptôme / constat | Cause probable | À vérifier |
|---|---|---|
| Écran blanc partout, après l’activation d’une extension ou d’un thème | Erreur fatale dans le code ajouté | Dossier de l’extension, debug.log |
Écran blanc après modification de functions.php ou de wp-config.php | Erreur de syntaxe PHP | Le dernier fichier modifié, php -l |
| Écran blanc seulement dans l’administration ou l’éditeur | Extension chargée côté admin, mémoire insuffisante | Désactivation des extensions, limite de mémoire |
| Écran blanc sur une seule page ou un seul article | Gabarit, bloc ou shortcode défectueux, requête trop lourde | Journal à l’heure de l’affichage, mémoire |
| Page blanche sur le site mais l’administration fonctionne | Thème ou cache | Passage temporaire à un thème par défaut, vidage du cache |
| Page blanche intermittente, souvent sur des pages lourdes | Mémoire PHP, délai d’exécution | Fiche « mémoire épuisée » |
Les causes les plus fréquentes
- Une extension défaillante ou incompatible avec la version de PHP ou de WordPress.
- Un thème ou un code ajouté à
functions.phpavec une faute de syntaxe, une fonction inexistante ou une parenthèse manquante. - Une limite de mémoire PHP dépassée sur une page, un import ou une opération d’image.
- Un caractère parasite avant
<?phpou après la balise de fermeture, ou un fichier enregistré avec un marqueur d’ordre des octets (BOM). - Un cache (extension de cache, cache objet, OPcache) qui sert une version obsolète ou vide.
- Une mise à jour interrompue ou un fichier du cœur corrompu.
Solutions pas à pas
Faites une sauvegarde avant d’intervenir. Du moins invasif au plus technique :
1. Faire apparaître l’erreur
Éditez wp-config.php par SFTP et ajoutez, au-dessus de la ligne « That’s all, stop editing! », de quoi écrire les erreurs dans un fichier sans les montrer aux visiteurs :
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Rechargez la page en erreur, puis ouvrez wp-content/debug.log. Cherchez la ligne « PHP Fatal error » : elle indique le fichier et la ligne. Si le fichier n’existe pas, PHP n’a rien journalisé : consultez alors le journal d’erreurs du serveur (/var/log/nginx/error.log, /var/log/apache2/error.log ou le journal de votre hébergeur). Notre article sur les bons réflexes avec WP_DEBUG_LOG approfondit la méthode. Retirez ensuite ces lignes et supprimez debug.log.
2. Désactiver les extensions (sans accès à l’administration)
Par SFTP, renommez le dossier de l’extension désignée par le journal, ou tout le dossier des extensions :
wp-content/plugins/nom-de-l-extension → nom-de-l-extension.off
wp-content/plugins → wp-content/plugins.off
Avec WP-CLI :
wp plugin list --status=active
wp plugin deactivate --all
Si le site revient, restaurez le nom du dossier plugins puis réactivez les extensions une par une. Si le site reste blanc, passez à l’étape suivante.
3. Revenir à un thème par défaut
Renommez le dossier du thème actif dans wp-content/themes/, ou utilisez WP-CLI :
wp theme list
wp theme activate slug-du-theme-par-defaut
Un thème par défaut doit être présent, sinon WordPress n’a pas de solution de repli. Si l’écran blanc vient d’un code ajouté dans functions.php, retirez-le ou corrigez-le. Notre article sur l’écran blanc à l’activation d’un thème décrit un cas où une boucle d’inclusion épuisait la mémoire.
4. Chercher une erreur de syntaxe
Si un fichier PHP vient d’être modifié, vérifiez sa syntaxe en ligne de commande, sans l’exécuter :
php -l wp-config.php
php -l wp-content/themes/votre-theme/functions.php
La commande répond « No syntax errors detected » ou indique la ligne fautive. Vérifiez aussi qu’aucun caractère ou espace ne précède <?php et que le fichier est enregistré en UTF-8 sans BOM.
5. Relever la limite de mémoire
Si le journal contient « Allowed memory size », augmentez la mémoire dans wp-config.php :
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
La fiche mémoire épuisée détaille les autres réglages (php.ini, PHP-FPM).
6. Vider les caches et réinitialiser OPcache
Videz l’extension de cache et le cache objet (Redis, Memcached). Si vous déployez du code et que la page reste figée, rechargez PHP-FPM pour réinitialiser OPcache :
sudo systemctl reload php8.3-fpm
wp cache flush
Adaptez le nom du service à votre version de PHP. Sur un hébergement mutualisé, utilisez le bouton de vidage de cache du panneau.
7. Réparer le cœur de WordPress
wp core verify-checksums
wp core download --force --skip-content
La première commande liste les fichiers du cœur modifiés ou absents ; la seconde les remplace sans toucher à wp-content ni à wp-config.php.
Prévenir l’erreur
- Activez la journalisation en continu (
WP_DEBUG_LOGsans affichage) sur les environnements de test, et surveillez les journaux de production. - Testez toute modification de code sur une copie du site, jamais en direct dans l’éditeur de fichiers de l’administration.
- Mettez à jour avec méthode : une extension à la fois, après sauvegarde, en vérifiant le site entre chaque mise à jour.
- Dimensionnez la mémoire PHP à 256 Mo au moins pour un site avec constructeur de pages ou boutique.
- Gardez un accès SFTP et WP-CLI opérationnels : ce sont vos outils de secours quand l’administration ne répond plus.
Questions fréquentes
Pourquoi WordPress n’affiche-t-il pas l’erreur critique à la place ?
Parce que l’erreur est survenue trop tôt (par exemple dans wp-config.php), qu’elle n’est pas de type fatal, ou que le gestionnaire a été désactivé. Dans ces cas, seul le journal permet de lire la cause.
L’écran blanc n’apparaît que dans l’administration : est-ce normal ?
C’est fréquent : une extension qui ne se charge que côté admin, ou une limite de mémoire plus basse, en est souvent la cause. Désactivez les extensions et comparez les pages concernées.
Mes données sont-elles perdues ?
Non, un écran blanc est un problème de code, pas de données. Vos articles restent en base. Sauvegardez quand même avant de modifier des fichiers.
Faut-il laisser WP_DEBUG activé ?
Non, pas en production. Activez-le le temps du diagnostic avec WP_DEBUG_DISPLAY à false, puis retirez-le et supprimez debug.log, qui peut contenir des chemins et des données sensibles.