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

PHP Memory Limit

Jede Anwendung, die auf der Skriptsprache PHP entwickelt wurde, nutzt das vom Webserver zur Verfügung gestellte PHP Memory Limit, um die Logik des PHP-Skripts abzuarbeiten. Wie genau das funktioniert und wofür die Speichergrenze dient, erklären wir Ihnen ausführlich in diesem Artikel. Da es vorkommen kann, dass die Standardkonfiguration des Webhosters nicht ausreicht, zeigen wir Ihnen auch, wie Sie im Handumdrehen das PHP Memory Limit für Ihre gehostete Website erhöhen können. Da jeder Webhoster ein maximales 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, von Anfang an den passenden Webhoster für Ihre Website zu wählen.

Was ist PHP und wie arbeitet die Skriptsprache?

PHP steht für Hypertext Preprocessor und ist eine weitverbreitete Open-Source-Skriptsprache. Sie kommt besonders bei Webanwendungen zum Einsatz. Die Skriptsprache ist plattformunabhängig und somit auf jedem Betriebssystem wie z. B. Windows, Linux, Unix oder macOS 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-Dokumentation unterstützt wird.

Für die Verarbeitung eines PHP-Skripts 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ünschte .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, als HTML zurückgegeben. Nach der Verarbeitung des gesamten PHP-Skripts 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 das 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, kann jedes PHP-Skript bis zu 128 MB für die Ausführung des Skripts 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 unkontrolliert den gesamten zur Verfügung stehenden Arbeitsspeicher ausnutzen und somit die Performance des Webservers beeinträchtigen. Es gibt viele Ursachen, die zur Ausnutzung des kompletten Memory Limits führen können. So kann z. B. eine Endlosschleife eines selbst entwickelten PHP-Skripts oder die Installation eines neuen WordPress-Plugins die Ursache sein.

Sollte das PHP Memory Limit aus welchem Grund auch immer ausgeschöpft sein, 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 die Bereinigung des PHP-Codes oder durch die Deaktivierung von Plugins mit zu hohem Speicherbedarf lösen. Hilft 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 das PHP Memory Limit erhöhen möchten, sollten Sie unbedingt auch die Korrelation zwischen dem Speicherlimit und der maximalen Anzahl von gleichzeitigen Seitenaufrufen kennen. Erhöhen Sie das Limit, das jedem PHP-Skript zur Verfügung steht, verringern Sie auch die Anzahl der gleichzeitig ausführbaren PHP-Skripte, die mit Seitenaufrufen gleichzusetzen sind.

Um 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 vollständig 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 auch für die Installation und den Betrieb eines Content-Management-Systems (CMS) wie WordPress, Joomla, Drupal oder Typo3 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 tun, sofern Ihr Webhoster solch eine Möglichkeit bietet. Sowohl die wp-config.php die php.ini 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', '256M');
  • .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;
  • Im Skript erhöhen

    Wenn Sie das PHP Memory Limit nicht global für alle PHP-Skripte Ihrer Website erhöhen möchten, können Sie dies auch für ein einzelnes Skript festlegen. Fügen Sie dazu einfach die folgende Anweisung in den Code ein.

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

Wir empfehlen, die Anpassungen über die wp-config.php vorzunehmen, da diese am übersichtlichsten ist und bei einer syntaktisch falschen Konfiguration am wenigsten Probleme auftreten. Auch das Erhöhen der Speichergrenze in einzelnen Skripten sollte problemlos möglich sein.

Mit der Wertzuweisung „-1“ wird die Speichergrenze aufgehoben. Das bedeutet, dass das PHP-Skript den kompletten zur Verfügung stehenden Speicher nutzten kann. Diese Einstellung sollten Sie jedoch unbedingt vermeiden, da es schnell zu Performance- und Speicherproblemen führt.

memory_limit = -1

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 vornherein ein höheres 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, sodass Sie die Möglichkeit haben, eigenständig eine Erhöhung vorzunehmen. Ist die definierte Höchstgrenze Ihres Webhosting-Pakets zu klein, bekommen Sie ein höheres PHP Memory Limit nur durch ein Upgrade auf ein leistungsstärkeres Paket. Um Ihnen einen kleinen Überblick über die festgelegten Limits der Webhoster zu geben, haben wir für Sie die einzelnen Angaben in einer Tabelle zusammengetragen.

WebhosterPHP Memory Limit
minimum
PHP Memory Limit
maximum
Website
1blu256 MB512 MBzum Anbieter
Alfahosting256 MB1024 MBzum Anbieter
All-Inkl64 MB1024 MBzum Anbieter
Dogado256 MB1024 MBzum Anbieter
Goneo128 MB512 MBzum Anbieter
Host Europe256 MB256 MBzum Anbieter
Ionos512 MB768 MBzum Anbieter

Häufig gestellte Fragen zum PHP Memory Limit

Loader image

Um das PHP Memory Limit zu ermitteln, stehen Ihnen zwei einfache Möglichkeiten zur Verfügung. Die erste Option besteht darin, direkt bei Ihrem Webhoster nachzufragen oder auf dessen Website nach Informationen zur Speichergrenze zu suchen. Alternativ können Sie das Limit auch über einen PHP-Befehl auslesen. Dazu können Sie die folgenden Befehle in ein PHP-Skript einfügen:

  • phpinfo();
    Die Methode liefert zahlreiche Informationen zur Konfiguration, darunter auch das maximale PHP Memory Limit.
  • ini_get('memory_limit');
    Diese Methode gibt den Wert des Konfigurationsparameters für das PHP Memory Limit aus.

Wenn Sie WordPress nutzen, können Sie die Speichergrenze im Administrationsbereich unter "Werkzeuge" > "Website-Zustand" > "Bericht" > "Server" abrufen.

Ein zu hohes Limit kann dazu führen, dass schlecht programmierte Skripte übermäßig viele Ressourcen beanspruchen und den gesamten Server verlangsamen. Es ist wichtig, dass Sie das Limit nur so hoch wie nötig festlegen und Skripte regelmäßig überprüfen.