« Allowed memory size exhausted » sur WordPress : augmenter la limite de mémoire PHP

Santé du site WordPress, section Serveur : la limite de mémoire PHP affiche 256M

L’essentiel à retenir ℹ️

Le message « Allowed memory size of X bytes exhausted » signifie qu’un script PHP a dépassé la limite de mémoire autorisée (134 217 728 octets = 128 Mo). Il existe deux niveaux de réglage : memory_limit côté PHP, fixé par l’hébergeur, et les constantes WP_MEMORY_LIMIT (40M par défaut, 64M en multisite) et WP_MAX_MEMORY_LIMIT (256M par défaut) côté WordPress, qui ne peuvent que relever la limite de PHP, jamais la baisser. Lisez la valeur effective dans Outils > Santé du site > Informations, relevez-la dans wp-config.php, .user.ini ou chez l’hébergeur, et au-delà de 256 Mo, cherchez l’extension en cause plutôt que de monter encore.

134 217 728 octets. C’est 128 Mo, la valeur par défaut de la limite de mémoire de PHP, et c’est le chiffre qu’on croise le plus dans le message « Allowed memory size of 134217728 bytes exhausted ». Votre site affiche un écran blanc ou « Il y a eu une erreur critique sur ce site », et le journal d’erreurs crache cette ligne.

Le réflexe classique consiste à coller une ligne trouvée sur un forum dans wp-config.php. Parfois ça marche, souvent ça ne change rien, et vous ne savez pas pourquoi. Je vous montre comment lire la limite réellement appliquée, comment l’augmenter au bon endroit, et dans quels cas il vaut mieux ne pas y toucher.

Que dit exactement le message « Allowed memory size exhausted » ?

Le message est produit par PHP lui-même, pas par WordPress. Il a toujours la même forme :

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /home/compte/public_html/wp-content/plugins/nom-du-plugin/fichier.php on line 412

Trois informations à en tirer. Le premier nombre est la limite en octets : divisez-le par 1 048 576 pour l’avoir en Mo (134 217 728 = 128 Mo, 268 435 456 = 256 Mo). Le second, après tried to allocate, est la petite quantité que PHP n’a pas pu obtenir : elle ne dit rien de la vraie consommation. Et surtout, le chemin du fichier désigne souvent le plugin ou le thème qui tournait au moment du dépassement.

Pour vous éviter le calcul, voici les valeurs que l’on croise le plus souvent :

LIRE AUSSI  Hébergement web gratuit pour WordPress : ce que vaut chaque option
Nombre affiché dans le messageLimite correspondante
4194304040 Mo
6710886464 Mo
134217728128 Mo
268435456256 Mo
536870912512 Mo
10737418241 Go

Ne confondez pas avec le message « Out of memory », qui ne mentionne aucune taille autorisée. Là, ce n’est plus la limite de PHP qui est atteinte : le plus souvent, c’est le serveur lui-même qui n’a plus de mémoire à donner. Relever memory_limit n’y change rien, contactez votre hébergeur.

memory_limit et WP_MEMORY_LIMIT : deux limites, pas une

C’est là que tout le monde se perd. Il existe une limite côté PHP, la directive memory_limit, fixée par l’hébergeur. Et il existe deux constantes côté WordPress :

  • WP_MEMORY_LIMIT : la mémoire visée pour les pages publiques. Par défaut 40M sur un site simple, 64M sur un multisite.
  • WP_MAX_MEMORY_LIMIT : la mémoire visée pour les tâches lourdes, à savoir l’administration (pour les administrateurs), le traitement des images, la décompression des archives et les tâches planifiées. Par défaut 256M, ou la limite PHP si elle est déjà plus haute.

La règle qui change tout : WordPress ne baisse jamais la limite de PHP, il ne peut que la relever. Au chargement, il compare WP_MEMORY_LIMIT à memory_limit et n’agit que si sa valeur est plus haute. Avec un PHP réglé à 128 Mo, les 40M par défaut ne servent donc à rien : c’est 128 Mo qui s’applique.

Exemple concret, relevé le 13 octobre 2026 sur astuceswp.fr : memory_limit est à 256M chez mon hébergeur, WP_MEMORY_LIMIT n’est pas défini et reste à 40M. Résultat, mes pages tournent avec 256 Mo de plafond, et WP_MAX_MEMORY_LIMIT s’aligne aussi sur 256 Mo. Ajouter define( 'WP_MEMORY_LIMIT', '256M' ); chez moi ne changerait strictement rien.

Lire la limite de mémoire réellement appliquée

Avant de modifier quoi que ce soit, regardez ce que votre site utilise vraiment. Rendez-vous dans Outils > Santé du site, onglet Informations :

  1. Dépliez la section Serveur : la ligne Limite de mémoire PHP donne la valeur de base. Si WordPress l’a relevée pour l’administration, une seconde ligne apparaît, « Limite de mémoire PHP (uniquement pour les écrans d’administration) ».
Santé du site WordPress, section Serveur : la limite de mémoire PHP affiche 256M
  1. Dépliez Constantes WordPress : vous y lisez WP_MEMORY_LIMIT et WP_MAX_MEMORY_LIMIT.
Constantes WordPress dans Santé du site : WP_MEMORY_LIMIT à 40M et WP_MAX_MEMORY_LIMIT à 256M

Pour savoir quelle marge il vous reste, installez Query Monitor : son panneau d’aperçu affiche le pic de mémoire de la page en cours, rapporté à la limite. Une page d’accueil qui consomme 30 Mo sur 256 Mo n’a aucun problème de mémoire, inutile de chercher de ce côté.

Petit piège si vous passez par WP-CLI : la commande wp eval 'echo ini_get("memory_limit");' lit le php.ini de la ligne de commande, pas celui du site. Sur mon serveur, elle renvoie -1 (aucune limite) alors que le site tourne à 256 Mo. Fiez-vous à Santé du site.

LIRE AUSSI  Comment le nocode révolutionne la création de produits digitaux ?

Augmenter la limite de mémoire PHP : trois niveaux

Faites une sauvegarde de votre site avant de toucher à un fichier de configuration. Une faute de frappe dans wp-config.php suffit à faire tomber le site.

Niveau 1 : wp-config.php

Ajoutez ces lignes au-dessus de la mention « That’s all, stop editing! » (« C’est tout, ne touchez pas à ce qui suit ! » sur une installation en français) :

// Mémoire visée pour les pages publiques
define( 'WP_MEMORY_LIMIT', '256M' );
// Mémoire visée pour l'administration, les images et les tâches planifiées
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

Ça ne marche que si votre hébergeur autorise PHP à changer sa limite en cours d’exécution. Si la directive est verrouillée côté serveur, WordPress tente le changement et échoue sans rien dire. Vérifiez donc dans Santé du site que la valeur a bien bougé.

Niveau 2 : php.ini ou .user.ini

Sur la plupart des hébergements mutualisés, PHP tourne en FastCGI et lit un fichier .user.ini placé à la racine du site (le dossier qui contient wp-config.php). Créez-le ou complétez-le :

; Limite de mémoire PHP pour ce site
memory_limit = 256M

Sachez que PHP ne relit ce fichier que toutes les 5 minutes par défaut. Ne concluez pas à un échec au bout de 30 secondes. Sur un serveur à vous (VPS, serveur dédié), modifiez directement le php.ini de la version de PHP utilisée, puis redémarrez PHP-FPM.

Et le fameux php_value memory_limit 256M dans le .htaccess ? Il ne fonctionne qu’avec PHP chargé comme module Apache, ou sous LiteSpeed. Ailleurs, il provoque une erreur 500 immédiate. Je l’évite.

Niveau 3 : le réglage chez l’hébergeur

Réglage de memory_limit à 256M dans le sélecteur de version PHP du cPanel o2switch

C’est la voie la plus sûre. Dans cPanel, cherchez le sélecteur de version PHP (onglet Options sur les hébergements CloudLinux, comme o2switch) ou l’éditeur INI de PHP, puis réglez memory_limit. Pas d’interface ? Écrivez au support.

Certains hébergeurs plafonnent la mémoire et rien de ce que vous écrirez ne passera au-dessus. Depuis PHP 8.5, ils disposent même d’une directive dédiée, max_memory_limit, qui ramène toute demande supérieure au plafond. Si votre offre bloque à 128 Mo et que votre site en a vraiment besoin, c’est un argument pour changer d’hébergement WordPress.

Quand il ne faut pas augmenter la mémoire

Soyons clairs : la mémoire est un plafond, pas un réservoir. Si un site plante à 256 Mo, il y a de bonnes chances qu’il plante aussi à 512 Mo, juste un peu plus tard. Une boucle infinie ou un plugin qui charge des milliers d’objets d’un coup avalera n’importe quelle limite. La documentation officielle de WordPress le dit elle-même : relever la limite peut masquer la vraie cause.

Mon seuil : au-delà de 256 Mo pour les pages publiques, je cherche un coupable au lieu de monter encore. Voici comment le trouver :

  • Lisez le chemin dans le message : wp-content/plugins/nom-du-plugin/ désigne un suspect direct.
  • Activez le journal avec define( 'WP_DEBUG', true ); et define( 'WP_DEBUG_LOG', true ); dans wp-config.php, puis lisez wp-content/debug.log. Pensez à tout désactiver ensuite.
  • Ouvrez l’e-mail de WordPress intitulé « Votre site connaît un problème technique » : il nomme souvent l’extension fautive et contient un lien de mode de récupération pour accéder à l’administration.
  • Désactivez les extensions une par une, ou toutes d’un coup en renommant le dossier wp-content/plugins par FTP si l’administration est inaccessible.
LIRE AUSSI  WordPress 7.0 Armstrong : brancher Claude, ChatGPT ou Gemini via les Connecteurs IA

Deux cas reviennent souvent. L’erreur au téléversement d’une photo : une image de 6 000 pixels de large est décompressée en entier en mémoire pour générer les miniatures, réduisez-la avant envoi (tout est dans mon guide pour optimiser les images sur WordPress). L’erreur juste après une mise à jour : c’est presque toujours l’extension mise à jour, revenez à la version précédente et suivez les précautions de mon guide sur la mise à jour de WordPress.

Mon réglage par défaut

Sur un site vitrine ou un blog, 128 Mo côté PHP suffisent largement. Avec WooCommerce, un constructeur de pages ou beaucoup d’extensions, je vise 256 Mo. Je ne mets jamais -1 (aucune limite) : sur un mutualisé, c’est laisser un script fou consommer la mémoire du serveur jusqu’à ce que l’hébergeur le coupe.

Bref, retenez trois actions. Lisez la limite effective dans Santé du site avant de modifier quoi que ce soit. Relevez memory_limit chez l’hébergeur ou dans .user.ini, et gardez WP_MEMORY_LIMIT pour les hébergements qui l’acceptent. Si l’erreur revient au-dessus de 256 Mo, arrêtez de monter et cherchez l’extension en cause. Si je ne devais garder qu’un conseil : lisez le chemin du fichier dans le message d’erreur, il vous donne le coupable plus vite que n’importe quel réglage.

Foire aux questions

128 Mo suffisent pour un blog ou un site vitrine. Visez 256 Mo avec WooCommerce, un constructeur de pages ou de nombreuses extensions. Au-delà, l’augmentation cache le plus souvent un plugin trop gourmand ou une boucle infinie.

Non. La limite est un plafond par requête, pas une réserve : PHP n’occupe que la mémoire dont le script a réellement besoin. Une limite plus haute n’accélère pas non plus le site, elle évite seulement l’arrêt brutal du script.

Soit votre hébergeur interdit de modifier la limite en cours d’exécution, et WordPress échoue sans prévenir. Soit la valeur choisie est inférieure ou égale à celle de PHP, et elle n’a aucun effet. Vérifiez dans Outils > Santé du site, puis passez par .user.ini ou par le panneau de l’hébergeur.

134 217 728 octets valent 128 Mo, la limite par défaut de PHP. Pour convertir, divisez le nombre du message par 1 048 576 : 67 108 864 donne 64 Mo, 268 435 456 donne 256 Mo.

WP_MEMORY_LIMIT vise les pages publiques, avec 40M par défaut et 64M en multisite. WP_MAX_MEMORY_LIMIT vise l’administration, le traitement des images et le cron de WordPress, avec 256M par défaut. Aucune des deux ne peut abaisser la limite fixée par PHP.

La valeur -1 supprime toute limite. Sur un hébergement mutualisé, un script défaillant peut alors consommer la mémoire du serveur jusqu’à ce que l’hébergeur le coupe. Gardez une valeur chiffrée, 128 ou 256 Mo selon le site.

Steve Chevillard

A propos de Steve Chevillard

Je suis responsable du numérique pour Philo éditions (Philosophie magazine, Sciences Humaines, Philonomist) et j'utilise WordPress depuis la fin des années 2000. J'ai créé astuceswp.fr en 2018 pour partager mon expérience et aider ceux qui veulent se lancer sur WordPress ou aller plus loin avec leur site. Je publie des tutoriels pratiques sur WordPress, l'hébergement, le SEO et les outils numériques, en essayant de rester le plus clair et accessible possible. Mon objectif : vous donner les clés pour être autonome sur votre site, sans vous noyer dans le jargon technique.