Wie kann ich den Speicherlimit-Fehler (memory_limit) in PHP im LAMP Stack erhöhen?
- Einleitung
- Standort und Bearbeitung der php.ini
- Ändern des Speicherlimits
- Zusätzliche Möglichkeiten zur Erhöhung
- Apache neu starten
- Überprüfung der Änderung
- Zusammenfassung
Einleitung
Wenn Sie beim Ausführen von PHP-Skripten in Ihrem LAMP-Stack (Linux, Apache, MySQL, PHP) einen Speicherlimit-Fehler erhalten, liegt das meistens daran, dass das in der PHP-Konfiguration vorgegebene Limit für den Arbeitsspeicher zu niedrig ist, um den Anforderungen des Skripts gerecht zu werden. Dieser Fehler wird durch die Einstellung memory_limit in der PHP-Konfigurationsdatei php.ini gesteuert. Um diesen Fehler zu beheben, muss der Wert erhöht werden.
Standort und Bearbeitung der php.ini
Die zentrale Konfigurationsdatei für PHP ist die php.ini. In einem LAMP-Stack befindet sie sich je nach Distribution und PHP-Version häufig in Verzeichnissen wie /etc/php/7.x/apache2/php.ini oder /etc/php/7.x/cli/php.ini. Um den korrekten Pfad zu finden, können Sie ein PHP-Skript mit phpinfo() ausführen. Dieses Skript zeigt unter anderem den Pfad zur verwendeten php.ini an.
Zum Bearbeiten öffnen Sie die Datei mit einem Texteditor, zum Beispiel mit nano oder vim. Sie benötigen dazu meist Root-Rechte, also verwenden Sie sudo, zum Beispiel:
sudo nano /etc/php/7.x/apache2/php.iniÄndern des Speicherlimits
In der geöffneten php.ini suchen Sie nach der Einstellung memory_limit. Diese kann zum Beispiel so aussehen:
memory_limit = 128MDer Wert in Megabyte (M) bestimmt, wie viel RAM PHP maximal verwenden darf. Um das Limit zu erhöhen, ändern Sie den Wert auf eine höhere Zahl, beispielsweise:
memory_limit = 512MAlternativ können Sie auch -1 setzen, um kein Speicherlimit zu haben. Das ist aber aus Sicherheits- und Stabilitätsgründen meist nicht empfehlenswert.
Zusätzliche Möglichkeiten zur Erhöhung
Neben der direkten Änderung in php.ini können Sie das Speicherlimit auch über andere Wege anpassen. Wenn Sie keinen Zugriff auf die php.ini haben, kann in manchen Fällen eine Änderung in der .htaccess-Datei im Webroot funktionieren, indem Sie eine Direktive wie
php_value memory_limit 512Mhinzufügen. Achtung: Das funktioniert nur, wenn PHP als Apache-Modul läuft und die Serverkonfiguration das erlaubt.
ini_set(memory_limit, 512M);Diese Wirkung gilt allerdings nur für das eine Skript und kann nicht alle Speicherlimit-Probleme bei anderen Skripten lösen.
Apache neu starten
Nachdem Sie die php.ini geändert haben, muss der Apache-Webserver neu gestartet werden, damit die Änderungen wirksam werden. Hierzu führen Sie den folgenden Befehl aus:
sudo systemctl restart apache2 sudo service apache2 restartÜberprüfung der Änderung
Um sicherzugehen, dass das neue Speicherlimit geladen wurde, erstellen Sie ein kleines PHP-Skript mit folgendem Inhalt:
<?phpphpinfo();?>Rufen Sie dieses im Browser auf und suchen Sie nach dem Eintrag memory_limit. Dort sollte nun der neue Wert stehen.
Zusammenfassung
Das Erhöhen des Speicherlimits in PHP im LAMP-Stack erfolgt meist durch Bearbeitung der php.ini und Anpassung des Wertes der Direktive memory_limit. Nach dem Speichern muss der Apache-Webserver neu gestartet werden, damit die Änderung aktiv wird. Alternativ können auch .htaccess oder ini_set() verwendet werden, allerdings mit Einschränkungen. Mit einem Testskript kann die Änderung überprüft werden, um sicherzustellen, dass das neue Speicherlimit angewendet wird.
