Technologieführer

PHP Out of memory-Fehler beheben — PHP-Speicher erhöhen

4 min read Server Aktualisiert 09 Oct 2025
PHP Memory-Limit erhöhen: Out of memory Fehler beheben
PHP Memory-Limit erhöhen: Out of memory Fehler beheben

TL;DR

Wenn PHP mit einer “Out of memory”-Meldung abstürzt, ist die schnellste Lösung ein Neustart des Webservers. Die dauerhafte Lösung besteht darin, das PHP-Memory-Limit zu erhöhen oder das betroffene Skript zu optimieren. Dieser Beitrag erklärt vier praktikable Methoden, beschreibt typische Fallstricke (mod_php vs. PHP-FPM vs. CGI) und liefert eine Schritt-für-Schritt-Checkliste zum Troubleshooting.

Fehlerbeispiel

Beim Moderieren von Kommentaren erschien statt des Admin-Dashboards folgende Fehlermeldung:

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

Schnellheilung: Ein Neustart des Apache httpd löste das Problem kurzfristig. Ursache: Ein PHP-Skript benötigte mehr Arbeitsspeicher als das aktuell erlaubte memory_limit.

Kurzüberblick: Warum passiert das

PHP hat eine Konfigurationsoption memory_limit, die die maximale Menge an Arbeitsspeicher pro Skript begrenzt. Ist ein Skript speicherhungrig (große Arrays, unkontrollierte Schleifen, Bilderverarbeitung), schlägt die Ausführung fehl, sobald das Limit erreicht ist. Hosting-Umgebungen setzen dieses Limit oft restriktiv.

Vier Methoden, das Memory-Limit zu erhöhen

Die Reihenfolge entspricht typischer Wirksamkeit und Zugriffsrechte.

1. Permanent in php.ini anpassen

  1. Ermitteln, welche php.ini verwendet wird: Erstelle eine Datei check.php im Document Root mit diesem Inhalt:

Rufe die Datei im Browser auf und suche nach “Loaded Configuration File” — das ist die aktive php.ini (häufig /usr/local/lib/php.ini).

  1. Öffne diese php.ini in einem Texteditor und ändere die Direktive:
memory_limit = 32M
  1. Apache oder PHP-FPM neu starten, damit die Änderung greift.

Hinweis: Erhöhe schrittweise (z. B. 8M → 16M → 32M → 64M), prüfe Stabilität und Seitenauslastung.

2. Zur Laufzeit mit ini_set

Wenn du keine php.ini ändern kannst, versuche in der betroffenen Datei, möglichst früh, folgendes einzufügen:

ini_set('memory_limit', '32M');

Wichtig: ini_set wirkt nur, wenn die Konfiguration auf dem Server dies zulässt und die Anweisung vor speicherintensiven Operationen steht.

3. Über .htaccess (nur bei mod_php)

Falls der Server mod_php (Apache-Modul) nutzt, kannst du in die .htaccess:

php_value memory_limit 32M

Achtung: Bei CGI/FastCGI/PHP-FPM führt php_value in .htaccess zu einem Serverfehler. Dann nutze eine andere Methode.

4. WordPress-spezifisch: wp-config.php

Für WordPress-Seiten kannst du in die wp-config.php eine Erhöhung setzen:

define('WP_MEMORY_LIMIT', '32M');

Diese Einstellung wirkt nur, wenn der Hoster keine niedrigere Server-Vorgabe erzwingt.

Was tun, wenn die Änderungen keine Wirkung zeigen

  • Prüfe, ob du die richtige php.ini bearbeitet hast (siehe phpinfo-Ausgabe).
  • Prüfe, ob PHP als Modul (mod_php) oder als PHP-FPM/CGI läuft. .htaccess funktioniert nicht mit PHP-FPM.
  • Manche Hoster setzen Limits serverseitig (z. B. im Apache-VHost oder via suhosin). Wende dich an den Hosting-Support.
  • Bei geteiltem Hosting kann ein physisches Limit durch den Provider bestehen; ein Upgrade oder ein Wechsel auf VPS/Managed-Server kann nötig sein.

PHP-FPM-spezifische Hinweise

Bei PHP-FPM muss das memory_limit in der globalen php.ini oder in der Pool-Konfiguration gesetzt werden. Pool-Dateien liegen beispielsweise unter /etc/php/7.x/fpm/pool.d/*.conf; nach Änderung PHP-FPM neu starten:

systemctl restart php7.x-fpm

Optimieren statt immer erhöhen

Das dauerhafte Erhöhen des Limits ist nicht immer die beste Lösung. Prüfe:

  • Werden große Arrays korrekt unset() gemacht?
  • Gibt es unendliche Rekursionen oder unerwartet hohe Schleifen?
  • Können Daten gestreamt statt vollständig geladen werden (z. B. CSV, Bilder)?

Optimierung reduziert langfristig Betriebskosten und steigert Stabilität.

Kompatibilitätsmatrix kurz

  • mod_php (Apache): .htaccess und php.ini-Einträge wirken.
  • PHP-FPM: Pool- und php.ini-Einstellungen; .htaccess wirkungslos.
  • CGI/FastCGI: php_value in .htaccess verursacht Fehler; nutze ini_set oder php.ini.

Triage-Playbook (SOP) — Schritt für Schritt

  1. Fehlerlog prüfen (PHP- und Webserver-Logs).
  2. Kurzfristig: Webserver neu starten (z. B. systemctl restart apache2).
  3. phpinfo()-Seite erstellen und aktive php.ini lokalisieren.
  4. memory_limit schrittweise erhöhen (php.ini oder ini_set).
  5. PHP-FPM/Apache neu starten und Verhalten beobachten.
  6. Wenn weiter: Debuggen welches Skript den hohen Verbrauch verursacht (Profiling, var_dump memory_get_usage()).
  7. Host kontaktieren, wenn Limits serverseitig erzwungen werden.

Testfälle und Akzeptanzkriterien

  • Nach Erhöhung: Die ausgegebene Fehlermeldung darf nicht mehr erscheinen.
  • Lasttest: Das Skript läuft mehrfach parallel ohne Out-of-memory innerhalb der erwarteten Last.
  • Logs: Keine neuen PHP memory warnings in error.log.

Checkliste nach Rolle

  • Entwickler: Prüfe Code auf speicherintensive Stellen und setze ini_set nur temporär.
  • Systemadministrator: Ändere php.ini oder Pool-Konfiguration und überwache RAM/Swap.
  • Hosting-Support: Prüfe Provider-Limits und dokumentiere, ob serverseitige Beschränkungen bestehen.

Kurzer Diagnosemodus: Befehle und Snippets

  • phpinfo(): zeigt die verwendete php.ini.
  • memory_get_usage(): prüft aktuellen Verbrauch in Scripts.

Beispiel zur Laufzeit-Messung:

echo 'Memory usage: ' . memory_get_usage(true) . " bytes\n";

Wann diese Maßnahmen nicht reichen

  • Wenn ein Plugin oder Skript ein Memory-Leak hat, hilft nur Debugging oder ein Patch.
  • Bei massivem Traffic kann ein einzelnes Server-Upgrade nötig sein.
  • Bei restriktivem Shared Hosting ist ein Wechsel des Hosting-Plans oft die pragmatische Lösung.

Faktenkasten

  • Default memory_limit in vielen alten PHP-Versionen: 8M (veraltet).
  • Empfohlene Minimalwerte für CMS: WordPress oft 64M–128M, komplexe Anwendungen benötigen mehr.

Kurze Zusammenfassung

Fehler “Out of memory” bedeutet, das PHP-Skript braucht mehr Speicher als erlaubt. Kurzfristig hilft ein Serverneustart; dauerhaft erhöht man das memory_limit über php.ini, ini_set, .htaccess (nur mod_php) oder wp-config.php (WordPress). Prüfe immer, welche PHP-Laufzeitumgebung (mod_php, PHP-FPM, CGI) aktiv ist und ob der Hoster serverseitige Limits erzwingt. Optimiere Skripte, bevor du den Speicher unbegrenzt erhöhst.

Bildquelle: Clarkandransom

Autor
Redaktion

Ähnliche Materialien

DM‑Verity auf Pixel 7 und 7 Pro deaktivieren
Android

DM‑Verity auf Pixel 7 und 7 Pro deaktivieren

Netflix offline: Filme & Serien herunterladen
Streaming

Netflix offline: Filme & Serien herunterladen

Flash-Whitelist unter Windows RT schnell hinzufügen
Windows

Flash-Whitelist unter Windows RT schnell hinzufügen

Photoshop CS5 mit Wine auf Ubuntu 10.10
Linux

Photoshop CS5 mit Wine auf Ubuntu 10.10

Netflix herunterladen: Filme & Serien offline
Streaming

Netflix herunterladen: Filme & Serien offline

Firefox: Fehler "läuft bereits, reagiert nicht" beheben
Fehlerbehebung

Firefox: Fehler "läuft bereits, reagiert nicht" beheben