Was ist PHP Memory Limit und wie lässt es sich verändern?
Anwender von Content Management Systemen (CMS) oder Shopsystemen wundern sich darüber, wenn plötzlich Fehlermeldungen wie ‘Fatal error: Allowed memory size of xxx bytes…’ auftauchen. Dabei handelt es sich um eine Meldung vom verwendeten System. Dieses versucht, mehr Arbeitsspeicher zu verwenden als in den PHP-Skripten vorgesehen ist. Das PHP Memory Limit von Anwendungen wie Wordpress, Typo3 oder Joomla sowie Magento oder Shopware lässt sich durch ein paar einfache Schritte erhöhen.
Was ist PHP und wie funktioniert es?
PHP ist eine sogenannte Skriptsprache. Durch den Quellcode, der in PHP verfasst wurde, können Webanwendungen das Geschriebene leicht verstehen und interpretieren. Dank eines entsprechenden Interpreters, der die Verarbeitung des Codes übernimmt, wird die Software Zeile für Zeile ausgelesen. Alle Anweisungen werden so, wie sie in der Datei php.ini hinterlegt wurden ausgeführt.
Anwendungen wie Wordpress, Joomla oder Magento setzen sich aus einer großen Anzahl an Skripten zusammen. Diese übernehmen jeweils eine spezielle Aufgabe. Die Dateien werden zur Laufzeit in die vorgesehenen Bereiche des Arbeitsspeichers hineingeladen. Dieser wird jedoch durch das sogenannte PHP Memory Limit begrenzt. Nutzer, die wissen, wie sie die dazugehörige Datei ändern können, sind in der Lage, diese nach persönlichen Wünschen anzupassen und zu erhöhen.
PHP Skripte werden geschrieben, um eine Webseite im HTML Format herzustellen. Dazu verwenden sie unterschiedliche Quellen. Dafür können zum einen Datenbanken herangezogen werden, aus deren Tabellen Werte übernommen werden. Zum anderen können andere Skripte oder CSS-Dateien ausgelesen werden. Die Dateien sind hauptsächlich dazu geschrieben worden, um der Seite bestimmte Style-Codes zuzuweisen oder Animationen hervorzurufen. Diese dienen widerrum interaktiven Möglichkeiten wie einem animierten Menü oder sich bewegenden Grafiken.
Was ist das PHP Memory Limit und wozu wird es verwendet?
PHP reserviert sich den benötigten Anteil an Arbeitsspeicher. Das ist notwendig, damit Skripte ordnungsgemäß ausgeführt werden können. Die Größe des zu belegenden Speichers wird durch das PHP Memory Limit definiert. Die Anweisungen hierzu befinden sich in der Datei php.ini. Diese Art der Limitierung dient einem bestimmten Zweck. Denn das PHP Memory Limit hat ebenso eine Schutzfunktion. Die Hardware wie PC oder mobiles Endgerät der Anwender wird durch die Limitierung des Arbeitsspeichers zur Laufzeit davor bewahrt, bei einem Fehler im Programm einen Performance-Verlust zu erleiden oder abzustürzen.
Ein gutes Beispiel für eine zu hohe Speicherbelegung ohne PHP Memory Limit in der Datei php.ini ist die Endlosschleife. Sollte einem Programmierer ein Fehler unterlaufen sein und versehentlich eine Schleife aufgerufen werden, die sich endlos selber um den Wert eins erhöht, könnte das fatale Folgen haben. Ebenso könnte ein Hacker ein solches Skript einfügen, sodass das laufende System zum Absturz gebracht würde. Die fehlende Limitierung hätte zur Folge, dass sich das betreffende Programm immer mehr von dem verbleibenden Arbeitsspeicher sichert. Die Folge wäre, dass nicht mehr genügend Speicher verbleibt, um das Betriebssystem sauber auszuführen. Dieses kann seine Arbeit nicht mehr richtig ausführen und kann schließlich zum Absturz gebracht werden.
PHP Memory Limit ist also eine durchaus sinnvolle Einrichtung. Schließlich möchtest Du nicht, dass Betrachter Deiner Webseite einen Systemabsturz erleiden, nur weil sie auf Deine Seite gesurft sind. Diese Informationen solltest Du stets beachten, wenn Du PHP Memory Limit händisch manipulierst. Doch es sind noch einige weitere wichtige Punkte zu beachten.
Wie hoch sollte PHP Memory Limit eingestellt werden?
Die meisten Webhosting-Unternehmen stellen die Größe für PHP Memory Limit standardgemäß zwischen 32 und 64 Megabyte (MB) ein. Diese Voreinstellung reicht für gängige Anwendungen wie Wordpress, Joomla oder Typo3 in der Regel aus. Die Programme sollten bei dieser Einstellung ohne Probleme arbeiten. Jedoch kann es bei zusätzlichen Installationen wie Plug-ins oder anderen Erweiterungen beziehungsweise größeren Datenbanken zu einer Fehlermeldung kommen. Ebenso reicht diese Limitierung bei vielen E-Commerce Anwendungen nicht aus. Das liegt daran, dass ein höherer Speicherbedarf für die Verarbeitung der Skripte erforderlich ist.
Bei einem erhöhten Bedarf an Arbeitsspeicher bricht das Programm ab und es wird eine Fehlermeldung sichtbar. Diese lautet in den meisten Fällen wie folgt:
>> Fatal error: Allowed memory size of xxx bytes…
Was ist im Falle einer Fehlermeldung zu tun?
PHP Memory Limit kann im Falle einer Fehlermeldung erhöht werden. Dadurch steht dem Interpreter im Weiteren ein höherer Speicher zur Verfügung. Die betreffenden Speicher verbrauchenden Skripte können temporär wieder ausgeführt werden. Als Folge verschwindet die Fehlermeldung. Für herkömmliche CMS Anwendungen wie Wordpress oder Joomla liegt der Speicherbedarf ohnehin bei etwa 64 MB. Shopsysteme wie Magento oder Shopware können bis zu 512 MB Arbeitsspeicher benötigen. Höhere Kapazitäten sind in den wenigsten Fällen erforderlich. Ansonsten könnte die Fehlermeldung eventuell auf einen Programmfehler hinweisen. Weitere Ausgaben enthalten wertvolle Hinweise auf Fehlerquellen innerhalb des installierten Programms. Sollte die Software fehlerhaft sein, ist es notwendig, die Anwendung zu debuggen oder neu zu installieren.
PHP Memory Limit anpassen: so funktioniert es
Die meisten Webhosting Unternehmen erlauben eine Erhöhung des PHP Memory Limits in bestimmten Begrenzungen. Für die Anpassungen gibt es unterschiedliche Lösungsansätze:
Anpassungen innerhalb der .htaccess Datei
Innerhalb der .htaccess Datei können einige Anpassungen vorgenommen werden, um das PHP Memory Limit heraufzusetzen. Die Datei liegt im Hauptverzeichnis von Anwendungen wie Wordpress, Joomla, Typo3, Magento oder Shopware. In dem File sind in den meisten Fällen einige wichtige Regeln hinterlegt. Diese dienen dem korrekten Ausführen der Skripten sowie dem richtigen Aufruf der Internetadresse. Ebenso können weitere Anweisungen sowie Weiterleitungen im .htaccess Skript hinterlegt sein.
Dieses File ist jedoch lediglich auf Apache 2 Webservern zu finden. Auf anderen Servern gibt es andere Mittel, Befehle, welche die Seite betreffen zu hinterlegen. Falls Du das PHP Memory Limit über diese Methode erhöhen möchtest, reicht es zunächst aus, eine Datei mit der Bezeichnung .htaccess zu finden oder anzulegen. Du findest dieses File über den FTP-Client oder den Dateimanager des Webhosters im Root-Verzeichnis Deiner Installation. Füge in der bestehenden oder neu angelegten .htaccess die Codezeile php_value memory_limit 64M ein. Die Arbeit an der .htaccess Datei ist somit erledigt.
Änderungen an der php.ini
In der php.ini sind alle Anweisungen bezüglich der allgemeinen Konfiguration des PHP Interpreters enthalten. Alle Anpassungen, die Du dort einfügst, betreffen den gesamten Server, auf dem die Anwendung installiert ist. Einige Webhoster erlauben die Erstellung einer individuellen php.ini. Kunden können dort ihre lokalen Einstellungen nach Belieben einfügen.
In der php.ini sind in der Regel zu einem Großteil Kommentare enthalten. Diese betreffen die Funktionen, die auf dem Server im Hintergrund arbeiten. In der php.ini ist ein Abschnitt enthalten, der als Ressource Limits bezeichnet wird. Hier lassen sich Anpassungen des PHP Memory Limits eintragen. In der Datei wirst Du in den meisten Fällen einen Eintrag finden, der etwa wie folgt lautet:
>> memory_limit = 64M
Das bedeutet, dass der Arbeitsspeicher für Anwendungen auf 64 MB maximal festgelegt wurde. Die wenigsten Provider bieten Kunden an, Änderungen an dieser globalen Datei einzufügen. Die Anpassungen betreffen schließlich einen ganzen Kreis von Nutzern, die ihre Internetseiten oder Shopsysteme auf diesem Webserver hosten. Etwas anderes gilt lediglich bei einem eigenen VPS oder Root Server. Dabei steht es Mietern des Webservers frei, das PHP Memory Limit nach eigenen Wünschen anzupassen.
Können Anpassungen in der config.php durchgeführt werden?
In einigen Fällen besteht die Möglichkeit, Änderungen direkt in der Konfigurationsdatei der Software anzupassen. Das ist beispielsweise bei Wordpress in der Datei wp-config.php möglich. Die WP-Config-Datei findest Du im Wurzelverzeichnis Deiner Installation. Das ist der Speicherort, an dem ebenso andere wichtige Ordner wie wp-admin, wp-content oder wp-includes zu finden sind.
In dieser Datei sind zahlreiche Informationen enthalten, die Wordpress benötigt, um korrekt zu funktionieren. Sollte sich hierin ein Fehler einschleichen, arbeitet die gesamte Anwendung nicht mehr. Die Folge sind mannigfaltige Fehlermeldungen. Bei einem falschen Eintrag kann es also geschehen, dass die Seite nicht mehr erreichbar ist. Ferner kann die gesamte Installation dabei zerstört werden.
In anderen CMS oder Shopsystemen kann es ebenfalls eine entsprechende Konfigurationsdatei geben. Dafür ist am besten das Handbuch des jeweiligen Systems heranzuziehen, um das entsprechende File ausfindig zu machen und anzupassen.
Wie werden Änderungen in der Konfigurationsdatei Deiner Wordpress Installation eingefügt?
Um Konstanten hinzuzufügen, kannst Du die Datei wp-config.php mit einem einfachen Texteditor öffnen. Hierzu ist es notwendig, das entsprechende File auf den eigenen Rechner herunterzuladen. Das funktioniert über den FTP-Client beziehungsweise den Dateimanager des Hosting-Unternehmens. Nach dem editieren musst Du die notwendigen Einträge hinzufügen. Wichtig ist hierbei den neuen Eintrag in der letzten Zeile anzufügen.
/*Erhöhen PHP Memory Limit to 128 MB*/
define(‘WP_MEMORY_LIMIT’, ‘128M’);
Was ist bei allen Anpassungen zu beachten?
Bei allen notwendigen Änderungen an wichtigen Dateien musst Du einige Dinge beachten. Jedes Hosting-Unternehmen ist daran interessiert, das PHP Memory Limit seiner Kunden auf einem maximalen Wert einzuschränken. Das ist deswegen beachtlich, da der Speicherverbrauch des gesamten Webservers kontrolliert werden muss. Jeder Anbieter hat jedoch eine andere Höchstgrenze. Diese kann beim Service Provider erfragt werden. Die Begrenzung liegt zumeist bei einem Wert zwischen 128 und 512 MB.
Fazit: PHP Memory Limit: Anpassungen in einfachen Schritten möglich
Ein PHP Fehler wegen der Überschreitung des Speicherlimits kommt häufiger vor, als viele Nutzer von CMS oder Shopsystemen annehmen. Gerade bei E-Commerce-Sites wie Magento oder Shopware kann es durch ein hohes Aufkommen an zu verarbeitenden Daten schnell zu einer Sprengung einer zu niedrigen Limitierung des Speichers kommen. Anwender kommen in diesen Fällen kaum darum herum, selber Hand anzulegen und entsprechende Dateien zu ändern.
Ebenso häufig taucht die Fehlermeldung bezüglich eines zu niedrigen Speicherlimits auf, falls Plug-ins oder Erweiterungen bei CMS wie Wordpress, Joomla oder Typo3 installiert werden. Das liegt vor allem vor, falls Komponenten der Installation mehr Speicherbedarf haben, als PHP dies zulässt. Ebenfalls bei umfangreichen Inhalten kann es zu Speicherproblemen kommen. Das gilt insbesondere, wenn diese ein hohes Maß an Arbeitsspeicher benötigen.
Falls alle Maßnahmen, die Limitierung zu erhöhen keinen Erfolg zeigen, kann es vorteilhaft sein, den Provider zu kontaktieren. Die meisten Anbieter kennen das Problem und bieten in diesen Fällen hilfreiche Lösungen an.