In PHP geschriebene Skripte sind sehr vielseitig: Sie müssen nicht kompiliert werden und werden recht schnell entwickelt, was sie häufig und nützlich macht.
Sie haben jedoch einen großen Nachteil. Im Kontext der serverseitigen Skripterstellung kann ein schlecht geschriebenes Skript leicht alle verfügbaren Serverressourcen verbrauchen. Daher gibt es in PHP ein Standardlimit dafür, wie viel Serverspeicher ein einzelnes Skript verwenden darf.
Obwohl in den meisten Anwendungen sehr notwendig, erfordern bestimmte Fälle die Erhöhung dieses Limits. Wir zeigen Ihnen, wie das geht, und geben Ihnen einige nützliche Tipps.
Was ist die PHP-Einstellung memory_limit?
Die Einstellung memory_limit in PHP wird auf Skriptebene angewendet, was bedeutet, dass es die maximale Servermemory ist, die ein einzelnes PHP-Skript verbrauchen darf. Die offizielle PHP-Dokumentation erklärt es so:
Legt die maximale Anzahl von Bytes fest, die ein Skript verbrauchen darf. Verhindert, dass schlecht programmierte Skripte den gesamten verfügbaren Serverspeicher verbrauchen.
Wenn Sie die Standard-Speicherlimiteinstellung von PHP nicht geändert haben, ist sie in der Regel auf 128 MB gesetzt. Wenn Sie sieben Skripte ausführen, die jeweils 80 MB benötigen, wird das Limit von 128 MB nicht erreicht, da jedes Skript weniger als diesen Wert verwendet. Wenn jedoch eines der Skripte plötzlich 130 MB benötigt, tritt ein Problem auf. Es erscheint ein Fehler wie:
Fatal error: Allowed memory size of x bytes exhausted (tried to allocate x bytes) in /path/to/php/script
oder:
PHP Fatal error: Out of memory (allocated x) (tried to allocate x bytes) in /path/to/php/script
Wie erhöhe ich das PHP-Speicherlimit in DirectAdmin?
Zuerst sollten Sie fragen, ob der Speicherverbrauch vernünftig ist. Wenn nicht, ist die klügste Lösung möglicherweise, die Probleme in Ihrem Skript zu beheben, die den übermäßigen Verbrauch verursachen. Wenn Sie der Meinung sind, dass der Verbrauch korrekt ist, müssen Sie die Server- oder VPS-Konfiguration anpassen.
Schritt 1: Um das PHP-Speicherlimit in DirectAdmin zu ändern, müssen Sie die php.ini-Datei bearbeiten, aber zuerst müssen Sie sie finden. Ein einfacher Trick, um Ihre php.ini zu finden, ist PHP zu fragen, was es verwendet:
/usr/local/bin/php --ini | grep 'Loaded Configuration File'
Wenn Sie die Standard-PHP-Version in der Befehlszeile (CLI) verwenden, befindet sich Ihre php.ini unter:
/usr/local/lib/php.ini
Schritt 2: Bearbeiten Sie nun die Zeile «memory_limit» mit den gewünschten Werten. Wenn Sie «memory_limit» nicht finden, fügen Sie am Ende der php.ini folgende Zeile hinzu:
memory_limit = 128M; /* Ändern Sie 128M entsprechend Ihren Anforderungen */
Sie können den Texteditor nano über eine SSH-Sitzung verwenden.
Schritt 3: Starten Sie nun Apache neu.
Zusätzliche Hinweise: Beachten Sie, dass folgende Einstellungen ebenfalls relevant sein können:
Um die maximale POST-Datengröße zu erhöhen:
post_max_size = 8M
Um die maximale erlaubte Dateigröße beim Hochladen zu ändern:
upload_max_filesize = 2M
Fazit
Das PHP-Speicherlimit existiert aus gutem Grund. Ohne es kann ein schlecht geschriebenes Skript leicht alle Serverressourcen verbrauchen und viele Probleme verursachen. Wenn Sie jedoch ein robusteres System haben und mehr Ressourcen für PHP-Skripte nutzen möchten, können Sie die maximale zugewiesene Menge durch Bearbeitung einer Konfigurationsdatei ändern.