![]() | |||||||||||||
Navigation • Home
| 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.
Warum es memory_limit in PHP gibtAuf 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 wirdGerade beim Verkleinern großer Fotos braucht PHP viel Speicher, weil das Bild kurzzeitig komplett im Arbeitsspeicher liegt. Die folgende Tabelle gibt eine grobe Orientierung.
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 brauchenEine 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 anpasstEs gibt mehrere Stellen, an denen sich das Limit ändern lässt. Welche du nutzen kannst, hängt von deinem Hosting ab:
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 solltestDas 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 deutenWenn 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 FragenBeim 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 ThemenDas memory_limit wirkt selten allein, diese verwandten Einstellungen und Schritte gehören beim Bilder-Upload dazu. | ||||||||||||