Was ist das PHP Memory Limit und wie kann man diesen erhöhen?

Jede Anwendung, die auf der Skriptsprache PHP entwickelt wurde, nutzt den vom Webserver zur Verfügung gestellten PHP Memory Limit, um die Logik des PHP-Skriptes abzuarbeiten. Wie genau das funktioniert und wofür die Speicherbegrenzung dient, erklären wir Ihnen in ausführlich in diesem Artikel. Da es vorkommen kann, dass die Standardkonfiguration des Webhosters nicht ausreicht, zeigen wir Ihnen auch, wie Sie im Handumdrehen den PHP Memory Limit für Ihre gehostete Website erhöhen können. Da jeder Webhoster ein maximalen PHP Memory Limit für seine Hosting-Produkte definiert, welches nicht überschritten werden kann, erhalten Sie von uns eine Übersicht mit den Webhostern und ihren Memory Limits. Dadurch sind Sie in der Lage, für Ihre Website, von Anfang an den passenden Webhoster zu wählen.

Was ist PHP und wie arbeitet die Skriptsprache?

PHP steht für Hypertext Preprocessor und ist eine weitverbreitete Open-Source-Skriptsprache, die besonders bei Webanwendungen zum Einsatz kommt. Die Skriptsprache ist plattformunabhängig und somit auf jedem Betriebssystem wie z.B. Windows, Linux, Unix oder Mac lauffähig. Für dynamische Anwendungen können sowohl relationale als auch nicht-relationale Datenbanken problemlos und schnell angebunden werden. Die Kommunikation über Protokolle wie HTTP, LDAP, POP3, IMAP, SNMP und COM wird ebenfalls unterstützt. Ein großer Vorteil von PHP ist die leichte Erlernbarkeit, die auch durch eine exzellente PHP-Online-Dokumention unterstützt wird.

Für die Verarbeitung eines PHP-Skriptes benötigen Sie lediglich auf der Client-Seite einen Browser, über den Sie die Website aufrufen. Serverseitig ist ein Interpreter notwendig, der den angefragten Aufruf der Website verarbeitet. Um die genaue Arbeitsweise von PHP verstehen zu können, möchten wir die einzelnen Schritte beginnend vom Website-Aufruf über die Verarbeitung der PHP-Datei bis hin zur Anzeige des Ergebnisses in Ihrem Browser durchgehen.

PHP-Funktionsweise inklusive PHP Memory Limit
PHP-Funktionsweise inklusive PHP Memory Limit

Beim Aufruf einer Website im Browser wird eine Anfrage, auch kurz Request genannt, an den Webserver gestellt. Der Webserver, auf dem die PHP-Software installiert ist, übernimmt diesen Request und ermittelt die gewünscht .php Datei. Diese Datei wird an den PHP-Interpreter gesendet, der entsprechend der Konfiguration durch das PHP Memory Limit einen Teil des Arbeitsspeichers reserviert. Der reservierte Speicher wird dann durch den Interpreter genutzt, um das Skript Zeile für Zeile abzuarbeiten. Dabei wird das Ergebnis des PHP Codes, welches z.B. aus einem Datensatz basierend auf einer Datenbankabfrage besteht könnte, als HTML zurückgegeben. Nach der Verarbeitung des gesamten PHP-Skriptes erhält der Webserver eine komplett auf HTML basierende Datei, die an den Browser als Antwort, auch Response genannt, weitergeleitet wird.

Was ist das PHP Memory Limit und wofür wird es genutzt?

Um PHP-Skripte abzuarbeiten wird ein Teil des Arbeitsspeichers reserviert. Die Größe dieses reservierten Arbeitsspeichers wird durch den PHP Memory Limit definiert. Dabei bezieht sich die Speicherangabe auf den maximal nutzbaren Arbeitsspeicher pro Skriptaufruf. Wenn also ein Limit von 128 MB auf dem Webserver eingerichtet wurde, so kann jedes PHP-Skript 128 MB für die Ausführung des Skriptes nutzen. Sollten fünf Skripte gleichzeitig ausgeführt werden, so wird dementsprechend 640 MB (5 PHP-Skripte x 128 MB PHP Memory Limit) an Arbeitsspeicher reserviert.

Das PHP Memory Limit schützt davor, dass schlechte oder fehlerhaft programmierte PHP-Skripte nicht unkontrolliert den gesamten zur Verfügung stehenden Arbeitsspeicher ausnutzen und somit die Performance des Webservers beeinträchtigen. Es gibt viele Ursachen, die zur Ausschöpfung des Memory Limits führen können. So kann z.B. eine Endlosschleife eines selbst entwickelten PHP-Skriptes oder eine Installation eines neuen WordPress-Plugins die Ursache sein.

Sollte das PHP Memory Limit aus welchem Grund auch immer ausgeschöpft sein, so wird vom System folgende Fehlermeldung ausgegeben:

Fatal error: Allowed memory size of [x] bytes exhausted (tried to allocate [x] bytes) in /[x].php on line [x]

In diesem Fall müssen Sie aktiv werden und Ihr System analysieren. Gegebenenfalls lässt sich das Problem durch Bereinigung des PHP-Codes oder durch die Deaktivierung von Plugins mit einem zu hohen Speicherbedarf lösen. Hilft gar nichts mehr, so bleibt Ihnen als letzte Möglichkeit noch das PHP Memory Limit zu erhöhen.

Zusammenhang zwischen dem PHP Memory Limit und der Anzahl der Seitenaufrufe

Wenn Sie den PHP Memory Limit erhöhen möchten, so sollten Sie unbedingt auch die Korrelation zwischen dem Speicherlimit und der maximalen Anzahl von gleichzeitigen Seitenaufrufen kennen. Erhöhen Sie das Limit, welches jedem PHP-Skript zur Verfügung steht, so verringern Sie auch die Anzahl der gleichzeitig ausführbaren PHP-Skripte, die mit Seitenaufrufen gleichzusetzen sind. 

Um Ihnen den Zusammenhang besser zu verdeutlichen, möchten wir Ihnen ein Beispiel geben. In diesem Szenario gehen wir von einem Server mit 2 GB Arbeitsspeicher aus, der Ihnen komplett zur Verfügung steht.

PHP Memory Limit128 MB256 MB512 MB1024 MB
Max. Anzahl gleichzeitiger Seitenaufrufe16842

PHP Memory Limit erhöhen

Die meisten Webhoster bieten bei ihren Hosting-Produkten die Standardgröße von 128 MB an. Das sollte für eine selbst entwickelte PHP-Website oder aber auch für die Installation und den Betrieb eines Content-Management-Systems (CMS) wie WordPress, Joomla, Drupal oder Typo3 vollkommen ausreichend sein. Dennoch kommt es immer mal wieder vor, dass komplexe Anwendungen mit großen Datenbankabfragen, das Auslesen und Einlesen von XML Dateien oder auch Plugins mit viel Rechenlogik ein höheres Limit erfordern. In diesem Fall können Sie über drei Varianten den PHP Memory Limit erhöhen.

Bei allen drei Varianten müssen Sie die Konfigurationsdateien öffnen und bearbeiten. Das können Sie entweder mit einem installierten FTP-Programm auf ihrem PC oder direkt online über Web-FTP, insofern Ihr Webhoster solche eine Möglichkeit bietet, tun. Sowohl die wp-config.php, die php.in als auch die .htaccess befinden sich im Root-Verzeichnis Ihrer CMS-Installation.

  • wp-config.php

    Beim CMS Hosting kann das PHP Memory Limit in der Konfigurationsdatei wp-config.php erhöht werden. Öffnen Sie die Datei und fügen Sie folgenden Code ein bzw. passen Sie die Variable „WP_MEMORY_LIMIT“ an, insofern diese bereits definiert ist.

    define('WP_MEMORY_LIMIT', '258M');
  • .htaccess

    Ebenfalls lässt sich das PHP Memory Limit über die .htaccess Datei erhöhen. Diese Datei wird ausschließlich von Apache-basierten Webservern verwendet. Ist das bei Ihnen der Fall, so können Sie hier folgenden Code einfügen bzw. das Limit anpassen.

    php_value memory_limit 256M
  • php.ini

    Über die php.ini lassen sich Server-Einstellungen konfigurieren. Diese werden beim Shared Hosting meist vom Webhoster verwaltet. Es gibt jedoch einige Webhoster, die das Anlegen einer eigenen php.ini erlauben und somit individuell Konfigurationen zulassen. Zum Erhöhen fügen Sie folgenden Code mit der Variable „memory_limit“ in der Datei ein oder passen diese nach ihren Bedürfnissen an.

    memory_limit = 256M;

Wir empfehlen Ihnen die Anpassungen über die wp-config.php vorzunehmen, da diese am übersichtlichsten ist und bei einer falsch syntaktischen Konfiguration am wenigsten Probleme auftreten.

Des Weiteren muss man wissen, dass eine Erhöhung des PHP Memory Limits nicht unbegrenzt möglich ist. Die maximale Höchstgrenze für das nutzbare Limit wird beim Shared Hosting vom Webhoster definiert und kann nicht überschritten werden. Ist das maximale Limit zu gering, so können Sie mit dem Webhoster in Kontakt treten, um eine Konfigurationsänderung zu erreichen, die Ihren Bedürfnissen entspricht oder Sie wechseln zu einem Webhoster der von vorne rein ein höhere PHP Memory Limit anbietet.

Minimale und Maximale PHP Memory Limit der Webhoster

Webhoster bieten ihren Kunden bei den Shared Hosting Produkten unterschiedliche PHP Memory Limits an. Oftmals ist die Standardeinstellung geringer als die definierte Höchstgrenze, so dass Sie die Möglichkeit habe eigenständig eine Erhöhung vorzunehmen. Es gibt jedoch auch Webhosting-Produkte mit fest definierten Limits. In diesem Fall können Sie nur einen höherer PHP Memory Limit nutzen, wenn Sie ein Upgrade auf ein leistungsstärkeres Webhosting-Paket durchführen. Um Ihnen einen kleinen Überblick über die festgelegten Limits der Webhoster zugeben, haben wir für Sie die einzelnen Angaben in einer Tabelle zusammengetragen.

WebhosterPHP Memory Limit
minimum
PHP Memory Limit
maximum
1&1512 MB768 MB
1blu256 MB512 MB
Alfahosting256 MB1024 MB
Dogado256 MB1024 MB
Goneo128 MB512 MB
Host Europe256 MB256 MB