Come appare il messaggio
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/www/site/vendor/autoload_real.php on line 41Cause frequenti
- PHP fatal error, ad es. “Allowed memory size … exhausted” o funzione non definita dopo un aggiornamento.
- Estensione PHP mancante dopo il cambio di versione.
- L'applicazione non può scrivere nelle directory di cache, log o upload.
- Loop di rewrite in nginx (“rewrite or internal redirection cycle”).
- Database non raggiungibile o credenziali cambiate.
Verifica
- Mostra gli ultimi errori nell'error.log di nginx
tail -n 50 /var/log/nginx/error.log - Mostra i messaggi di PHP-FPM degli ultimi minuti
journalctl -u 'php*-fpm' --since '15 min ago' --no-pager | tail -n 30 - Cerca fatal error nel log di PHP-FPM
grep -i 'fatal' /var/log/php*-fpm.log | tail -n 10 - Richiedi il codice di stato in modo ripetibile
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/
Soluzione
- Leggi il primo errore all'ora della richiesta: indica file e riga.
- Per errori di memoria alza
memory_limitnel pool o nel php.ini in modo mirato, non a -1. - Installa i moduli mancanti (es.
php8.3-intl) e riavvia PHP-FPM. - Dai all'utente di PHP-FPM i permessi di scrittura su cache e log.
- Dopo un aggiornamento fallito torna all'ultima versione funzionante e analizza con calma.
Domande frequenti
Accendo display_errors?
Non in produzione. Gli errori nel browser mostrano percorsi e credenziali. Tieni log_errors = On e leggi il log.
Perché nel log di nginx non c'è niente?
Allora PHP ha gestito l'errore da solo e ha restituito solo 500. Guarda il log dell'applicazione o quello di PHP-FPM con catch_workers_output = yes.