« Fatal error: Allowed memory size of 268435456 bytes exhausted » : ce message, quand il apparaît, ne s’affiche pas nécessairement à l’écran du visiteur, WordPress masquant par défaut les erreurs PHP en production. Le site présente alors un simple écran blanc, sans contenu, sans message, exactement au moment où le thème vient d’être activé depuis l’administration.
Ce symptôme, presque toujours interprété à tort comme une limite de mémoire trop basse à augmenter, cache en réalité une cause plus précise dans un nombre significatif de cas : une boucle d’inclusion entre deux fichiers du thème, chacun chargeant l’autre indéfiniment jusqu’à épuiser toute la mémoire disponible pour le processus PHP.
Symptôme : un écran blanc immédiatement après activation
Le thème s’active sans message d’erreur visible dans l’écran d’administration, mais toute tentative d’accès au site, y compris à l’administration elle-même, se solde par une page blanche. Aucune requête ne semble aboutir, et le comportement persiste même après avoir vidé un éventuel cache de page.
Diagnostic : activer la journalisation pour révéler l’erreur masquée
La première étape consiste à activer la journalisation des erreurs sans les afficher à l’écran, ce qui permet d’obtenir le message exact sans exposer d’information technique à un visiteur :
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Le fichier wp-content/debug.log révèle alors un message du type PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) in .../functions.php on line 42. Le numéro de ligne indiqué correspond presque toujours à un appel require ou include, pas à une boucle foreach ou while classique.

La cause fréquente : deux fichiers qui s’incluent mutuellement
Le scénario typique implique un fichier functions.php qui inclut un fichier inc/personnalisations.php, lequel, par erreur de copier-coller ou par une mauvaise résolution de chemin relatif, inclut à son tour functions.php :
// functions.php
require_once get_template_directory() . '/inc/personnalisations.php';
// inc/personnalisations.php, par erreur
require_once dirname( __DIR__ ) . '/functions.php';
Chaque inclusion réexécute l’ensemble du fichier concerné, qui relance à son tour l’inclusion du premier, sans jamais atteindre de condition d’arrêt. La pile d’appels grossit à chaque itération jusqu’à ce que la limite de mémoire allouée par PHP, définie par la directive memory_limit, soit atteinte, provoquant l’arrêt brutal du script.
Correctif : rompre la boucle avec require_once et une vérification de constante
La solution immédiate consiste à retirer l’inclusion erronée dans le fichier secondaire. Pour se prémunir d’une récidive, même en cas d’erreur future de copier-coller, une vérification de constante déjà définie évite qu’un fichier ne se recharge lui-même :
// En haut de functions.php
if ( defined( 'MON_THEME_FUNCTIONS_CHARGE' ) ) {
return;
}
define( 'MON_THEME_FUNCTIONS_CHARGE', true );
L’utilisation systématique de require_once plutôt que require réduit également le risque, puisque PHP ignore une seconde tentative de chargement du même fichier physique identifié par son chemin absolu résolu — un garde-fou utile, mais qui ne protège pas contre deux fichiers distincts qui s’incluent mutuellement l’un l’autre par des chemins différents.
Prévention : structurer les inclusions dans un seul sens
La bonne pratique consiste à organiser les fichiers d’un thème selon une hiérarchie d’inclusion à sens unique, où functions.php inclut des fichiers spécialisés, mais où ces derniers ne rechargent jamais functions.php ni aucun fichier situé plus haut dans la hiérarchie. Un schéma d’inclusion en arbre, jamais en cycle, élimine structurellement ce risque.
- Vérifier chaque nouveau
requireouincludeajouté à un fichier déjà inclus ailleurs. - Activer
WP_DEBUG_LOGsur l’environnement de développement dès l’apparition d’un écran blanc. - Documenter la hiérarchie d’inclusion prévue du thème pour éviter qu’un futur ajout ne l’inverse par erreur.
En résumé
Un écran blanc à l’activation d’un thème, sans message visible, mérite une vérification immédiate du fichier debug.log avant toute hypothèse sur la mémoire allouée par l’hébergeur. Une boucle d’inclusion entre deux fichiers du thème reste l’une des causes les plus fréquentes et les plus faciles à corriger une fois identifiée, à condition de remonter jusqu’au numéro de ligne exact indiqué par le message d’erreur.