In diesem Artikel möchte ich euch den Ursprung und die Lösung einer Fehlermeldung in Bezug auf WordPress erläutern, nach der ich in regelmäßigen Abständen immer wieder gefragt werde.
Es handelt sich dabei um folgende Meldung, die in den meisten Fällen im Backend von WordPress auftritt und dieses komplett oder teilweise unbenutzbar macht.
Fatal error: Allowed memory size of 654321 bytes exhausted (tried to allocate 12345 bytes) in /var/www/domain.de/wordpress/file.php on line 123
Der gezeigte Bytes-Wert sowie der Dateipfad und Zeile, in welcher der Fehler vorkommt, können abweichen.
Die Fehlermeldung kann in vielen Fällen scheinbar „grundlos“ und ohne vorherige Änderungen auftreten. Warum dies so ist möchte ich im weiteren Verlauf erklären.
Was bedeutet die Fehlermeldung
WordPress ist in der Skriptsprache PHP (PHP: Hypertext Preprocessor, ursprünglich Personal Home Page Tools) geschrieben. In PHP gibt es in der Konfigurationsdatei einen Wert mit dem Namen memory_limit. Das memory_limit oder zu deutsch Speicherlimit gibt an, wie viel Arbeitsspeicher ein PHP-Script während seiner Ausführung verwenden darf. Es regelt also den Speicherplatzverbrauch im RAM. Diese Einstellung soll Server vor einem Überlaufen des Arbeitsspeichers schützen und damit die Stabilität des Webservers in diesem Bereich gewährleisten.
Wenn ihr also diese Fehlermeldung auf irgendeiner Seite in eurem Frontend oder Backend von WordPress seht, möchte euch das System (der PHP-Interpreter und nicht WordPress selbst) auf folgendes Problem hinweisen: Das aktuell ausgeführte Script (und damit ist WordPress inkl. des aktiven Themes und aller Plugins gemeint) versucht mehr Arbeitsspeicher zu reservieren als in den Einstellungen erlaubt. Diese werden übrigens in den meisten Fällen von eurem Webhoster festgelegt.
Da durchaus jeder Aufruf einer Seite im WordPress-System einen anderen Speicherplatzverbrauch hat, kann es durchaus sein dass ihr diesen Fehler nicht sofort bemerkt. Zum Beispiel ist der benötigte Speicher im WordPress Dashboard ein ganz anderer, als der benötigte Speicher in der Ansicht für einen neuen Artikel.
Wodurch entsteht der Fehler „Fatal error: Allowed memory size of *** bytes exhausted…“
Der Fehler entsteht, wenn euer WordPress-System zu viel Arbeitsspeicher zur Ausführung belegen will bzw. muss. Der Bedarf an Arbeitsspeicher steigt übrigens mit jedem Plugin, welches ihr in eurem WordPress System installiert und einsetzt. Auch je nach Theme kann es zu unterschiedlichen Speicherbelegungen kommen.
Ebenso kann es zu speicherhungrigen Operationen direkt in WordPress kommen, z.B. bei der Massenbearbeitung von Inhalten oder vor allem, bei der Bearbeitung und Erzeugung von Bildern.
Es gibt in der Regel nicht „das eine Problem“, welches gelöst werden kann sondern es handelt sich um ein Problem im gesamten System.
Die langfristige Lösung für das Problem
Wie ihr sicher wisst, ist die typische Lösung für zu wenig Speicher in den meisten Fällen relativ einfach: „Das System muss aufgerüstet werden“.
In vielen Fällen bleibt euch bei einem Shared-Webhosting-Paket tatsächlich nichts anderes übrig, als das Paket zu upgraden. Also in ein größeres Paket mit mehr Speicher zu wechseln oder aber den Webhoster komplett zu wechseln.
Vorher solltet ihr jedoch noch einmal folgende Möglichkeiten durchprobieren:
Wer über einen eigenen Root-Server, VPS oder Shared-Hosting mit entsprechenden Rechten verfügt, kann die memory_limit Einstellung über die php.ini, direkt über PHP (z.B. in der wp-config.php) oder eine .htaccess Datei bei Apache Webservern hochsetzen:
Generell gilt: Rechnet kurz den Byte-Wert aus der Fehlermeldung in MB um, damit ihr ungefähr wisst, wie viel Speicher euch fehlt und auf welchen Wert ihr erhöhen müsst. Die 64MB sind im Folgenden nur ein Beispiel.
In der PHP Konfigurationsdatei „php.ini“ sucht ihr nach der entsprechenden Zeile und passt diese an (ggf. ist diese am Anfang durch ein ; (Semikolon) auskommentiert):
memory_limit = 64M;
oder schreibt z.B. in eure wp-config.php direkt nach dem beginnenden <?php Tag:
@ini_set('memory_limit','64M');
Alternativ kann in der wp-config.php auch der folgende Eintrag gesetzt werden:
define('WP_MEMORY_LIMIT', '64M');
oder in der .htaccess:
php_value memory_limit 64M
In manchen Fällen können die oben genannten Speicheranpassungen helfen und das System wieder lauffähig machen.
Wenn das alles nicht hilft, könnt ihr nur wie oben beschrieben den Webspace upgraden oder eine der folgenden kurzfristigen Lösungen probieren.
Die kurzfristigen Lösungsmöglichkeiten
Wer sein System kurzfristig wieder zum Laufen bringen möchte sollte versuchen, den Speicherbedarf zu reduzieren. Dies funktioniert, indem im ersten Schritt nicht benötigte oder verzichtbare Plugins deaktiviert werden.
Meine persönliche Lieblingsmethode für die kurzfristige Lösung ist das Abschalten der Übersetzungen, da diese teilweise einen umfangreichen Speicherbedarf haben. Öffnet dazu eure wp-config.php und setzt dort den Wert der WPLANG auf en_US. Alternativ könnt ihr die Konstante komplett entfernen oder auskommentieren.
define('WPLANG', 'en_US');
In den meisten Fällen sind Plugins für WordPress sowie auch das WordPress-System selbst im Original in englischer Sprache gehalten. Stellt man das System jetzt entsprechend um, müssen die Übersetzungsdateien nicht mehr geladen werden.
Der nun frei gewordene Speicher reicht oftmals schon aus, um das System wieder in vollem Umfang zum Laufen zu bringen.
Läuft das System erst einmal wieder, kann in Ruhe geklärt werden ob sich evtl., wie oben beschrieben, der Speicher erhöhen lässt.