memory_limit in PHP einfach erklärt für Einsteiger

 

memory_limit in PHP legt fest, wie viel Arbeitsspeicher ein einzelnes Script auf dem Server höchstens nutzen darf. Überschreitet ein Script diese Grenze, bricht PHP es ab und zeigt einen Fehler. Die Grenze schützt den Server davor, dass ein einzelner Vorgang den gesamten Speicher belegt und andere Besucher ausbremst.

Konzept-Illustration zu memory_limit in PHP: Speicher-Container füllt sich beim Verarbeiten eines großen Bildes bis zur Grenze

Warum es memory_limit in PHP gibt

Auf einem Server laufen viele Scripte gleichzeitig. Würde eines davon unbegrenzt Speicher anfordern, könnte es die ganze Maschine lahmlegen. Das memory_limit zieht deshalb eine klare Obergrenze pro Aufruf. Jeder Seitenaufruf bekommt sein eigenes Speicher-Budget.

Der Wert wird in Megabyte angegeben, etwa 128M. Das M steht für Megabyte. Ein typischer Standardwert liegt bei 128 oder 256 Megabyte. Für einfache Seiten reicht das locker, bei der Bildverarbeitung kann es eng werden.

Wann die Grenze für Galerien wichtig wird

Gerade beim Verkleinern großer Fotos braucht PHP viel Speicher, weil das Bild kurzzeitig komplett im Arbeitsspeicher liegt. Die folgende Tabelle gibt eine grobe Orientierung.

WertGeeignet fürHinweis
64Mkleine Textseitenoft zu wenig für Bilder
128Mnormale Galerienhäufiger Standard
256Mgroße Fotossichere Reserve

Bricht der Upload eines großen Bildes mit einer Speicher-Fehlermeldung ab, ist das memory_limit oft die Ursache. Dann hilft es, den Wert zu erhöhen oder die Bilder vor dem Upload zu verkleinern.

Warum Bilder so viel Speicher brauchen

Eine kompakte JPG-Datei täuscht über ihren wahren Speicherbedarf hinweg. Sobald PHP ein Bild öffnet, packt GD es im Arbeitsspeicher wieder auf seine volle Pixelfläche aus. Erst dann lässt es sich verkleinern.

Eine Faustregel macht das greifbar: Multipliziere Breite mal Höhe in Pixeln und rechne pro Punkt mehrere Byte hinzu. Ein Bild mit vielen Millionen Pixeln belegt so schnell deutlich mehr Speicher, als die Dateigröße auf der Festplatte vermuten lässt. Genau deshalb gehen Galerien bei sehr großen Fotos schneller ans Limit, als man denkt.

Wie du memory_limit in PHP anpasst

Es gibt mehrere Stellen, an denen sich das Limit ändern lässt. Welche du nutzen kannst, hängt von deinem Hosting ab:

  • Im Kundenmenü vieler Anbieter gibt es eine PHP-Einstellung dafür.
  • In der Datei php.ini, falls du Zugriff darauf hast.
  • In einer Datei namens .htaccess bei manchen Servern.
  • Auf Anfrage beim Support, wenn du selbst nichts ändern darfst.

Setze den Wert nicht unnötig hoch. Ein extrem großes Limit verdeckt nur, dass ein Script zu viel Speicher verbraucht, und kann den Server bei vielen Besuchern überlasten. Erhöhe in sinnvollen Schritten, etwa von 128 auf 256 Megabyte, und teste dann erneut.

Was du sonst beachten solltest

Das memory_limit ist nicht die einzige Grenze beim Upload. Auch die maximale Dateigröße und die Ausführungszeit eines Scripts spielen mit. Wenn ein Upload scheitert, lohnt der Blick auf alle drei Werte gemeinsam.

Nach einer Änderung prüfst du mit der Ausgabe von phpinfo, ob der neue Wert wirklich aktiv ist. Manchmal greift eine Einstellung erst nach einem Neustart des Webservers. Notiere dir den vorherigen Wert, damit du bei Problemen schnell zurücksetzen kannst.

memory_limit in PHP: die Fehlermeldung deuten

Wenn ein Script am Speicher scheitert, steht das meist klar in der Fehlermeldung. Ein typischer Hinweis lautet sinngemäß, dass die erlaubte Speichergröße erschöpft ist. Dahinter steht oft, wie viele Byte angefordert wurden. Diese Zahl verrät dir, wie knapp es wirklich war.

Manchmal taucht der Fehler nicht im Browser auf, sondern nur im Fehlerprotokoll des Servers. Wirft die Galerie eine leere oder halbe Seite aus, lohnt deshalb ein Blick in dieses Protokoll, das viele Hoster im Kundenmenü bereitstellen. Findest du dort den Hinweis auf den Speicher, weißt du, dass nicht das Script kaputt ist, sondern schlicht das Budget zu klein war. Das erspart dir lange Fehlersuche an der falschen Stelle.

Häufige Fragen

Beim Anpassen vom memory_limit tauchen vor allem zwei praktische Fragen auf, dazu eine zur Fehlersuche.

Welcher Wert für memory_limit ist für eine Bildergalerie richtig?

Für normale Galerien sind 128M ein brauchbarer Standard, beim Verkleinern großer Fotos ist 256M die sichere Reserve. 64M reicht nur für reine Textseiten und führt bei Bildern schnell zum Abbruch.

Wo ändere ich das memory_limit überhaupt?

In der php.ini trägst du memory_limit = 256M ein, alternativ in der .htaccess die Zeile php_value memory_limit 256M, sofern der Hoster das erlaubt. Direkt im Script geht es mit ini_set('memory_limit', '256M'); allerdings nur, wenn der Server diese Änderung nicht sperrt.

Warum bricht der Upload eines großen Bildes mit einem Speicherfehler ab?

Eine kompakte JPG-Datei wird beim Öffnen von GD im Arbeitsspeicher auf ihre volle Pixelfläche entpackt und braucht dann ein Vielfaches der Dateigröße. Reicht das memory_limit dafür nicht, stoppt PHP das Script, deshalb hilft entweder ein höherer Wert oder das Verkleinern der Bilder vor dem Upload.

Verwandte Themen

Das memory_limit wirkt selten allein, diese verwandten Einstellungen und Schritte gehören beim Bilder-Upload dazu.