« Allowed memory size of … bytes exhausted » sur WordPress : relever la mémoire et trouver la cause

Mis à jour le Durée : 25 minutes

Réponse courte

L’erreur « Allowed memory size of … bytes exhausted » signifie qu’un script PHP a dépassé la mémoire que le serveur lui autorise. Relevez WP_MEMORY_LIMIT dans wp-config.php, puis le memory_limit de PHP si le plafond reste le même. Cherchez ensuite l’extension ou la requête qui consomme trop, car augmenter la limite ne suffit pas toujours.

Le message complet ressemble à « Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /…/fichier.php on line N ». Il peut apparaître à l’écran, dans le journal d’erreurs, ou se cacher derrière un écran blanc ou une erreur 500. Le chemin du fichier indique souvent le coupable : un dossier d’extension, un thème, ou le noyau lui-même.

Le plafond vient de deux niveaux. WordPress fixe sa propre limite avec WP_MEMORY_LIMIT. PHP, de son côté, applique la directive memory_limit, que WordPress ne peut pas dépasser. Il faut donc agir sur le bon niveau, puis se demander pourquoi tant de mémoire est nécessaire.

Lire le message d’erreur complet

Repérez le nombre d’octets, le fichier et la ligne. Le nombre donne la limite actuelle : 134217728 octets correspondent à 128 Mo, 268435456 à 256 Mo. Si l’erreur est masquée, activez la journalisation avec les lignes define( 'WP_DEBUG', true );, define( 'WP_DEBUG_LOG', true ); et define( 'WP_DEBUG_DISPLAY', false ); dans wp-config.php, puis lisez wp-content/debug.log. Le chemin du fichier cité (wp-content/plugins/nom-extension/…) désigne l’extension en cause.

Relever WP_MEMORY_LIMIT dans wp-config.php

Faites une copie du fichier, puis ajoutez avant la ligne « That’s all, stop editing » : define( 'WP_MEMORY_LIMIT', '256M' );. Cette constante s’applique au site public. Pour l’administration, plus gourmande (mises à jour, médiathèque, importations), WordPress utilise WP_MAX_MEMORY_LIMIT, que vous pouvez fixer ainsi : define( 'WP_MAX_MEMORY_LIMIT', '512M' );. Rechargez la page qui échouait. Si le message affiche toujours la même limite en octets, le plafond de PHP bloque : passez à l’étape suivante.

Relever le memory_limit de PHP

Le réglage se trouve à un endroit qui dépend de l’hébergement :

  • sur un hébergement mutualisé, dans l’espace client, section PHP ou « Options PHP », ou dans un fichier .user.ini à la racine contenant memory_limit = 256M ;
  • sur un serveur dédié ou un VPS, dans le fichier php.ini de la version utilisée (pour PHP-FPM, souvent sous /etc/php/), puis rechargement du service avec systemctl reload php8.2-fpm en remplaçant par votre version ;
  • avec Apache et le module PHP, une ligne php_value memory_limit 256M dans .htaccess, si l’hébergeur l’autorise.

Vérifiez la valeur appliquée dans Outils, puis Santé du site, onglet Infos, section « Serveur ».

Trouver l’extension ou le thème gourmand

Si l’erreur survient à un endroit précis, c’est probablement lié à une extension précise : générateur de miniatures, import, sauvegarde, constructeur de pages, cache. Désactivez les extensions par FTP en renommant wp-content/plugins, puis réactivez-les une à une en rechargeant la page qui plante. Un thème surchargé de fonctions peut aussi être en cause : testez un thème par défaut. Le guide sur l’écran blanc WordPress détaille la méthode.

Repérer la requête ou l’action qui épuise la mémoire

Notez ce que vous faisiez : importer un fichier, envoyer une image très lourde, lancer une sauvegarde, afficher une page avec des milliers de produits. Des images de plusieurs mégaoctets de large saturent la mémoire à la génération des miniatures : redimensionnez-les avant l’envoi. Une tâche planifiée qui échoue en boucle est repérable dans les journaux. Si l’erreur apparaît seulement à l’import, découpez le fichier en lots.

Décider entre augmenter la limite et corriger la cause

Augmenter la limite convient quand le site est légitimement plus lourd qu’avant : plus de produits, une extension e-commerce, un constructeur de pages. Elle ne suffit pas si une extension fuit de la mémoire ou boucle : l’erreur reviendra, et un plafond très haut peut saturer le serveur quand plusieurs visiteurs arrivent ensemble. Dans ce cas, remplacez ou mettez à jour l’extension, ajoutez un cache de pages et surveillez la charge, comme décrit dans le guide sur le serveur surchargé.

Contrôler ce que l’hébergement autorise

Si les réglages ne changent rien, l’hébergeur plafonne peut-être la mémoire de l’offre : une limite ne peut pas être dépassée par un fichier du site. Vérifiez la limite de l’offre dans l’espace client, ou demandez-la au support. Un passage à une offre plus large, ou à un serveur dont vous gérez PHP, devient alors la solution, pas un nouveau réglage.

Questions fréquentes

Quelle valeur de WP_MEMORY_LIMIT choisir ?

Une valeur de 256M convient à la plupart des sites WordPress, 512M pour une boutique chargée ou un constructeur de pages. Montez par paliers plutôt que de viser très haut : une limite excessive masque un défaut et peut saturer le serveur. La valeur doit rester inférieure ou égale au memory_limit de PHP.

Pourquoi mon changement dans wp-config.php n’a-t-il aucun effet ?

WordPress ne peut pas dépasser le memory_limit de PHP. Si ce plafond est plus bas que la valeur demandée, c’est lui qui s’applique. Relevez-le côté PHP (espace client, .user.ini, php.ini), ou demandez à l’hébergeur si l’offre le plafonne. Le message d’erreur indique en octets la limite réellement appliquée.

Comment savoir quelle extension épuise la mémoire ?

Lisez le chemin du fichier dans le message ou dans debug.log : le dossier wp-content/plugins/nom-extension désigne l’extension. Sinon, désactivez-les toutes par FTP, puis réactivez-les une par une en retestant l’action qui échouait. Un outil de profilage comme Query Monitor aide aussi à voir la consommation par extension.

L’erreur n’apparaît que dans l’administration, est-ce normal ?

Oui, l’administration charge plus de code que le site public : mises à jour, médiathèque, éditeur de blocs. C’est pour cela que WordPress prévoit WP_MAX_MEMORY_LIMIT, plus élevé que la limite du site public. Relevez-la, puis vérifiez les extensions qui s’exécutent dans l’administration.

Un hébergeur peut-il refuser d’augmenter la mémoire ?

Oui, surtout sur les offres mutualisées d’entrée de gamme, où la mémoire par processus est plafonnée. Dans ce cas, aucune modification de fichier ne la relève. Les options sont d’alléger le site, de changer d’offre, ou de migrer vers un VPS où vous gérez PHP vous-même.

Sources

Voir aussi

Nos garanties

Comment se passe l’intervention