Risolvere l'errore PHP "Out of memory" nell'admin panel
Errore osservato
Ho trovato questo errore mentre moderavo dei commenti su TechPP e l’admin panel mostrava una pagina di errore invece della dashboard. L’errore era simile a questo:
PHP Fatal error: Out of memory (allocated 49545216) (tried to allocate 77824 bytes) in /home/xxxxx/public_html/xyz/admin.php(1758) on line 40
Questo indica che uno script PHP ha richiesto più memoria di quella consentita dalla configurazione corrente di PHP.
Soluzione veloce (riavvio)
Il primo rimedio rapido è riavviare il servizio HTTP del server. Esempi di comandi comuni:
# Debian/Ubuntu
sudo systemctl restart apache2
# CentOS/RHEL
sudo systemctl restart httpd
# Per PHP-FPM (se usi Nginx o FPM)
sudo systemctl restart php-fpm
# oppure specificare la versione, es. php7.4-fpm
sudo systemctl restart php7.4-fpm
Questo può risolvere immediatamente il problema, ma non è una soluzione definitiva: lo script che ha causato l’errore continuerà a richiedere troppa memoria finché non modifichi la configurazione.
4 modi per aumentare la memoria di PHP
Individua e modifica php.ini
- Crea un file nella root del sito, ad esempio
check.php
, con questo contenuto per individuare il php.ini caricato:
- Apri la pagina nel browser, cerca “Loaded Configuration File” per sapere quale php.ini è usato.
- Nel php.ini cerca la direttiva
memory_limit
(spesso impostata di default a 8M) e aumentala, ad esempio a12M
,16M
,32M
o oltre a seconda delle necessità:
memory_limit = 32M
- Salva il file e riavvia Apache/PHP-FPM.
- Crea un file nella root del sito, ad esempio
Impostazione runtime con ini_set
Se non hai accesso al php.ini, puoi aumentare la memoria nel singolo script PHP (se il permesso lo consente) inserendo all’inizio del file:
ini_set('memory_limit', '32M');
Questo modifica il limite solo per quel processo PHP.
Usare .htaccess (solo con mod_php/Apache)
Se PHP è eseguito come modulo Apache (mod_php), puoi aggiungere nel
.htaccess
della root:php_value memory_limit 32M
Nota: non funziona con PHP-FPM o CGI.
Per WordPress: wp-config.php
Nei siti WordPress puoi inserire nel
wp-config.php
:define('WP_MEMORY_LIMIT', '32M');
Questo aumenta il limite per WordPress, ma può essere ignorato da restrizioni imposte dall’hosting.
Diagnosi e passaggi consigliati (mini-metodologia)
- Riproduci l’errore su ambiente di staging se possibile.
- Controlla
phpinfo()
per conoscere ilmemory_limit
, il percorso del php.ini e il SAPI (mod_php, fpm, cgi). - Verifica i log di Apache/Nginx e PHP (es.
/var/log/apache2/error.log
,/var/log/php7.4-fpm.log
). - Applica un aumento temporaneo della memoria (ini_set o wp-config) per confermare che l’errore è dovuto al limite.
- Individua il punto dello script che consuma più memoria (profiling, var_dump, strumenti Xdebug o log di memoria).
- Se il consumo è anomalo, correggi il codice (loop infiniti, caricamento di dataset interi in memoria, query non paginate).
- Se è legittimo che serva più memoria (plugin pesante, import di dati), aumenta il limite in php.ini o chiedi un piano hosting con risorse superiori.
Quando queste soluzioni falliscono
- PHP è eseguito tramite PHP-FPM o CGI: modifiche in
.htaccess
non avranno effetto. - L’hosting impone limiti a livello di account (non modificabili dall’utente). In questo caso contatta il supporto.
- Il sistema operativo esaurisce la memoria fisica e l’OS uccide il processo (OOM). Controlla i log di sistema (
dmesg
,/var/log/syslog
). - Estensioni di sicurezza come Suhosin o impostazioni del provider bloccano le modifiche.
Controlli rapidi e checklist operativa
- [ ] Aprire
check.php
e verificareLoaded Configuration File
. - [ ] Controllare valore corrente di
memory_limit
in phpinfo. - [ ] Aumentare temporaneamente con
ini_set
e verificare se l’errore scompare. - Se sì, applicare la modifica in php.ini e riavviare i servizi.
- Se no, raccogliere log e contattare hosting.
Casi di test / Criteri di accettazione
- Il pannello di amministrazione si carica senza mostrare errori fatali.
phpinfo()
mostra ilmemory_limit
aggiornato (solo se modificato in php.ini o SAPI applicabile).- Nessun processo PHP finisce con exit per mancanza di memoria durante un test di carico simulato.
Checklist per ruoli
Sviluppatore:
- Profilare lo script con Xdebug o strumenti simili.
- Ridurre il consumo di memoria (caricare per chank, ottimizzare query).
Sysadmin:
- Individuare php.ini corretto, modificare
memory_limit
e riavviare i servizi. - Controllare limiti a livello OS e configurazioni di PHP-FPM.
- Individuare php.ini corretto, modificare
Supporto hosting:
- Confermare limitazioni dell’account e proporre upgrade se necessario.
- Fornire suggerimenti su configurazione PHP per l’ambiente gestito.
Note di sicurezza e buone pratiche
- Non aumentare il limite di memoria come unica misura senza capire perché il consumo è elevato.
- Evita di usare valori eccessivi che permettano comandi o script inefficienti a consumare risorse del server.
- Esegui modifiche in staging prima di applicarle in produzione.
Esempi e controesempi
- Esempio valido: un processo di importazione che lavora su grandi file CSV potrebbe richiedere un memory_limit più alto temporaneamente.
- Controesempio: un loop infinito o un leak di memoria in un plugin non si risolve aumentando arbitrariamente il limite; va corretto il codice.
Riassunto
Aumentare memory_limit
è la soluzione più comune per l’errore “Out of memory”, ma prima verifica quale php.ini viene caricato e se stai usando mod_php o PHP-FPM (quest’ultimo richiede modifiche diverse). Riavviare il server web risolve temporaneamente il problema ma non ne elimina la causa. Se non riesci a risolvere con i metodi descritti, contatta il supporto del tuo hosting.
Importante: se non sei sicuro, fai una copia dei file di configurazione prima di modificarli.
Immagine: Clarkandransom
Materiali simili

Scaricare film e serie da Netflix: guida completa

Correggi Firefox: errore già in esecuzione

Tim Cook: imparare a programmare oltre l'inglese

Velocizzare i download su Windows 10
PHP: Risolvere Out of memory
