Uno dei messaggi di errore WordPress più comuni recita qualcosa come "Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /wp-includes/...". Solitamente appare nel peggior momento possibile: nel mezzo di un aggiornamento di plugin, durante il salvataggio di una pagina lunga nell'editor, durante gli upload di media o subito dopo essere passati a un tema più esigente. La soluzione è quasi sempre aumentare il limite di memoria PHP. Il problema è che non c'è un solo limite di memoria. WordPress ne ha almeno tre diversi, più un quarto a livello PHP, e interagiscono in modi che sorprendono le persone. Questa guida spiega quale si applica in quale situazione e come aumentarlo nelle varie configurazioni di hosting.
Di quale "limite di memoria" stiamo parlando esattamente?
Quando viene richiesta una pagina WordPress, quattro limiti possono entrare in gioco:
- PHP
memory_limitinphp.ini. Il tetto duro imposto da PHP stesso. Nulla dentro WordPress può mai superarlo. I valori predefiniti tipici sugli host moderni sono 128M o 256M. WP_MEMORY_LIMIT. La costante propria di WordPress, definita inwp-config.php. Il predefinito è 40M. WordPress aumenta il limite PHP fino a questo valore all'avvio, ma solo seWP_MEMORY_LIMITè superiore al limite PHP corrente. Se il tuo PHPmemory_limitè già 256M, questa costante non ha effetto.WP_MAX_MEMORY_LIMIT. Una costante separata che si applica solo all'interno diwp-admin(dashboard, schermate di modifica, gestione plugin e temi, libreria media). Il predefinito è 256M. Impostalo più alto quando le pagine admin esauriscono la memoria ma il frontend funziona bene.- Sovrascritture dell'host. Molti host condivisi e gestiti limitano duramente il PHP
memory_limita livello di server, indipendentemente da cosa dice il tuophp.iniowp-config.php. Su quegli host, aumentare il limite da soli fallisce silenziosamente e devi contattare il supporto.
Il modello mentale pratico: WP_MEMORY_LIMIT è per il frontend, WP_MAX_MEMORY_LIMIT è per l'admin, ed entrambi sono limiti inferiori, non massimali. Possono solo aumentare il limite effettivo, mai abbassarlo sotto l'impostazione PHP. L'impostazione PHP è il vero tetto.
Quanta memoria ha veramente bisogno un sito WordPress?
Una scala approssimativa utile, basata su quello che vede InspectWP attraverso migliaia di scansioni:
- 64M. Una pulita installazione WordPress con un piccolo tema e cinque plugin ben configurati. Oggi è realistico solo su siti molto semplici, e anche allora è stretto.
- 128M. Il minimo effettivo per qualsiasi sito serio nel 2026. Tema standard, dieci o quindici plugin, nessun page builder. La maggior parte degli host predefinisce su questo.
- 256M. L'obiettivo sensato per la maggior parte dei siti. Page builder (Elementor, Divi, Bricks, Beaver Builder), WooCommerce, framework di temi più grandi, plugin di ottimizzazione delle immagini. Questo è anche il valore predefinito di
WP_MAX_MEMORY_LIMITper l'admin, il che non è un caso. - 512M. Negozi WooCommerce con un paio di centinaia di ordini e molte estensioni. Siti che eseguono suite SEO pesanti accanto a un page builder. Elaborazione di immagini su librerie multimediali grandi.
- Da 768M a 1024M. Negozi WooCommerce più grandi, siti multilingua con WPML o Polylang, siti di membership con logica di ruoli complessa, siti che eseguono importazioni pianificate.
- Sopra 1024M. Se ne hai davvero bisogno su un sito normale, di solito c'è qualcosa di sbagliato. Un plugin specifico perde memoria, un'attività di importazione carica l'intero database in un singolo processo PHP, o un tema fa qualcosa che non dovrebbe fare. Aumentare il limite aggira il sintomo per ora, ma la vera soluzione sta altrove.
La memoria è economica, ma la memoria illimitata nasconde i bug. L'azione giusta è aumentare il limite quel tanto che basta per far funzionare il sito comodamente, non impostarlo a 4G "per sicurezza".
Opzione 1: aumentare WP_MEMORY_LIMIT in wp-config.php
Questa è la modifica più semplice e più portabile. Apri wp-config.php nella cartella root di WordPress e aggiungi le seguenti righe, da qualche parte sopra il commento che recita /* That's all, stop editing! Happy publishing. */:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');Salva il file. WordPress applica i nuovi limiti alla prossima richiesta. Il frontend ora ha fino a 256M disponibili, l'admin fino a 512M. Nessun riavvio necessario.
Nota importante: questo funziona solo se il memory_limit a livello PHP è almeno alto quanto il valore che imposti. Se PHP è limitato dall'host a 128M, definire WP_MEMORY_LIMIT come 512M non fa nulla. WordPress prova ad aumentare il limite e PHP rifiuta. Il messaggio di errore rimane lo stesso. Vai all'Opzione 2.
Opzione 2: aumentare il PHP memory_limit a livello PHP
Se WP_MEMORY_LIMIT da solo non è sufficiente, la vera impostazione PHP deve salire. Dove la modifichi dipende dall'host:
Su hosting gestito (Raidboxes, Kinsta, WP Engine, Cloudways, SiteGround, Pressable)
Quasi tutti questi host offrono un'impostazione nella loro dashboard. Cerca "Impostazioni PHP", "Limite di memoria PHP" o simile. La modifica diventa solitamente attiva in pochi secondi, nessun riavvio necessario da parte tua. Alcuni host (Raidboxes, WP Engine) limitano il massimo a 512M o 768M per motivi di prestazioni. Se hai davvero bisogno di più, il supporto può solitamente aumentarlo su richiesta, ma chiederà prima perché, che è la reazione giusta.
Su hosting condiviso con cPanel/Plesk (Aruba, SiteGround, Hostinger)
cPanel e Plesk hanno entrambi un pannello di impostazioni PHP dove memory_limit può essere impostato per dominio. Cerca "MultiPHP INI Editor" (cPanel) o "Impostazioni PHP" (Plesk). Scegli il valore, salva, fatto. Alcuni host nascondono l'impostazione dietro un sottomenu "Opzioni PHP".
Se il pannello manca o l'impostazione non ha effetto, posiziona un file .user.ini nella cartella root di WordPress con questa singola riga:
memory_limit = 256MIl meccanismo .user.ini è supportato da ogni moderna configurazione PHP con CGI, FastCGI o PHP FPM, che è essenzialmente ogni host oggi. PHP raccoglie automaticamente il file; l'unica stranezza è un tempo di cache predefinito di cinque minuti prima che le modifiche diventino attive, dopodiché il nuovo limite si applica alla prossima richiesta.
Su un VPS auto-gestito o server dedicato
Modifica direttamente php.ini. Trova il php.ini attivo con php --ini sulla riga di comando; il percorso varia per distribuzione e versione PHP. Trova la riga memory_limit, modifica il valore, salva. Ricarica PHP FPM con sudo systemctl reload php8.2-fpm (adatta il numero di versione) o riavvia Apache se esegui mod_php.
Solo Apache: .htaccess (obsoleto)
Su configurazioni Apache più vecchie con mod_php (raro sull'hosting moderno), php_value memory_limit 256M in .htaccess può funzionare. Se il tuo host esegue PHP tramite FastCGI o PHP FPM, questa direttiva viene semplicemente ignorata. Usa invece .user.ini.
Come verificare quale limite è effettivamente attivo
Scoprire quale dei quattro limiti si applica richiede trenta secondi:
- Nell'admin di WordPress, apri Strumenti, Salute del sito, Info.
- Espandi la sezione Server. Vedi il
memory_limitPHP attivo. - Espandi la sezione Costanti WordPress. Vedi
WP_MEMORY_LIMITeWP_MAX_MEMORY_LIMIT, con i loro valori correnti.
Se le costanti WordPress mostrano i tuoi nuovi valori ma il PHP memory_limit è ancora più basso, l'host lo limita a livello di server. Parla con il supporto o usa il pannello dell'host dall'Opzione 2.
Per un controllo preciso dall'esterno della dashboard, posiziona questo file temporaneo in wp-content/mu-plugins/check-memory.php:
<?php
add_action('init', function () {
if (current_user_can('manage_options') && isset($_GET['check_memory'])) {
wp_die('PHP memory_limit: ' . ini_get('memory_limit'));
}
});Poi apri https://tuodominio.it/?check_memory=1 mentre sei loggato come amministratore. La pagina mostra il limite che PHP applica effettivamente per quella richiesta. Rimuovi il file quando hai finito.
Cosa fare se aumentare il limite non risolve l'errore?
Se "Allowed memory size exhausted" persiste dopo aver aumentato ogni limite a un valore sensato, il problema non è più "WordPress ha bisogno di più memoria". Cerca uno di questi:
- Un plugin specifico è il colpevole. Disattiva i plugin uno per uno e ricarica. L'errore individua il plugin nel percorso del file:
/wp-content/plugins/PLUGINNAME/.... Quel plugin ha una perdita di memoria o sta davvero facendo qualcosa di intensivo in memoria che dovrebbe essere suddiviso in compiti più piccoli. - Operazioni in blocco. Importare migliaia di prodotti tramite l'importatore CSV di WooCommerce, rigenerare miniature per un'intera libreria multimediale o eseguire un audit SEO completo può raggiungere qualsiasi limite di memoria. La risposta giusta è solitamente passare a WP CLI per questi compiti. La CLI ha un limite di memoria separato, tipicamente molto più alto e elabora i compiti in batch senza l'intero overhead del ciclo di richiesta di WordPress.
- WP Cron si blocca su un compito pesante. I compiti in background che vengono eseguiti tramite
wp-cron.phpcondividono lo stesso limite di memoria di una richiesta normale. Se un compito pianificato tenta di elaborare una coda enorme in una volta, fallisce ripetutamente senza un chiaro sintomo frontend. Disabilitare il WP Cron interno ed eseguirlo tramite cron di sistema solitamente aiuta. - Cache di oggetti configurata male. Un'istanza Redis o Memcached troppo piccola combinata con la cache di oggetti persistente di WordPress può causare strana pressione sulla memoria sotto carico. Vale la pena controllare se ne usi uno e il problema si verifica solo sotto traffico.
Errori comuni da evitare
- Impostare
WP_MEMORY_LIMITpiù basso del predefinito PHP. Inutile. WordPress aumenta solo il limite, mai lo abbassa.define('WP_MEMORY_LIMIT', '32M')su un host con PHP a 256M non fa nulla. - Impostare sia
WP_MEMORY_LIMITsiaWP_MAX_MEMORY_LIMITallo stesso valore. Funziona, ma rinunci alla possibilità di dare all'admin più memoria del frontend, che è l'intero punto di avere due costanti. - Annotare il valore come numero.
define('WP_MEMORY_LIMIT', 256)imposta il limite a 256 byte, non 256 megabyte. Annota sempre con l'unità:'256M'. - Modificare il wp-config.php sbagliato. Se la tua installazione è in una sottocartella, sia la cartella di installazione che la cartella superiore possono avere un
wp-config.php. Controlla dalla cartella WordPress verso l'alto e modifica quello che WordPress carica effettivamente.
Per la stragrande maggioranza dei siti, due righe in wp-config.php più un sensato PHP memory_limit dal pannello dell'host risolvono permanentemente l'errore. Se non è così, il problema non è la memoria, e aumentare ulteriormente il limite ritarda solo il prossimo guasto.