So sieht die Meldung aus
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 41Häufige Ursachen
- PHP Fatal Error, z. B. „Allowed memory size … exhausted“ oder undefinierte Funktion nach einem Update.
- Fehlende PHP-Erweiterung nach einem Wechsel der PHP-Version.
- Anwendung kann nicht in Cache-, Log- oder Upload-Verzeichnisse schreiben.
- Rewrite-Schleife in nginx („rewrite or internal redirection cycle“).
- Datenbank nicht erreichbar oder Zugangsdaten geändert.
Prüfen
- Letzte Fehler im nginx-error.log anzeigen
tail -n 50 /var/log/nginx/error.log - PHP-FPM-Meldungen der letzten Minuten anzeigen
journalctl -u 'php*-fpm' --since '15 min ago' --no-pager | tail -n 30 - Fatal Errors im PHP-FPM-Log suchen
grep -i 'fatal' /var/log/php*-fpm.log | tail -n 10 - Statuscode reproduzierbar abrufen
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/
Lösung
- Die erste Fehlermeldung zum Zeitpunkt der Anfrage lesen – sie nennt Datei und Zeile.
- Bei Speicherfehlern
memory_limitim Pool oder in der php.ini gezielt erhöhen, nicht pauschal auf -1. - Fehlende Module installieren (z. B.
php8.3-intl) und PHP-FPM neu starten. - Schreibrechte für Cache- und Log-Verzeichnisse an den PHP-FPM-Benutzer vergeben.
- Nach einem fehlgeschlagenen Update auf die letzte funktionierende Version zurückgehen und in Ruhe analysieren.
Häufige Fragen
Soll ich display_errors einschalten?
Nicht in Produktion. Fehlermeldungen im Browser verraten Pfade und Zugangsdaten. Lassen Sie log_errors = On und lesen Sie das Log.
Warum steht im nginx-Log nichts?
Dann hat PHP den Fehler selbst behandelt und nur 500 zurückgegeben. Schauen Sie in das Log der Anwendung oder in das PHP-FPM-Log mit catch_workers_output = yes.