WordPress – Fatal error: Allowed memory size of bytes exhausted

Eine der häufigsten Fehlermeldungen bei WordPress ist der PHP Fatal error: Allowed memory size of xxx bytes exhausted in /verzeichnis/datei.php on line xxx. Wie kann man den Fehler beheben / was ist die Lösung?

Zur Erklärung: Die Fehlermeldung “Fatal error: Allowed memory size of bytes exhausted” hat etwas damit zu tun, wie gross der maximal erlaubte PHP-Arbeitsspeicher auf dem Server ist – das sogenannte “memory_limit“. Ist diese Grenze erreicht, dann kommt es unter Umständen zum Fehler und Abbruch des PHP-Scripts. Das Script versucht dann mehr Arbeitsspeicher zu reservieren als in den WordPress-Einstellungen bzw. dem Server erlaubt ist. 

Normalerweise kann man an der Fehlermeldung mit ablesen, welche Datei den Fehler verursacht hat und auch in welcher Zeile er auftrat. Dann hat man mitunter schon eine Hinweis darauf, ob ein bestimmtes Plugin den Fehler verursacht hat oder WordPress selber.

Das Memory Limit erhöhen

Je nach Serverkonfiguration und Anzahl der installierten Plugins verbraucht WordPress unterschiedlich viel PHP-Arbeitsspeicher. Man muss nun also den Wert memory_limit erhöhen, um die Fehlermeldung “Fatal error: Allowed memory size of bytes exhausted” zu beheben.

Das Speicherlimit lässt sich leider nur erhöhen, wenn es der Hoster auch zulässt. Bei Webhosting-Paketen gibt es manchmal die Möglichkeit, diesen Wert direkt über die PHP-Einstellungen des Hosters zu verändern. Man loggt sich also bei seinem Anbieter ein, sucht nach den PHP-Einstellungen und ändert den Wert memory_limit” auf mindestens 128M, noch besser auf 256M oder 512M.

per wp-config.php Datei

Gibt es keine direkte Einstellung beim Hoster, dann kann man die Speichererhöhung über die WordPress Konfigurationsdatei probieren. Im WordPress-Hauptverzeichnis befindet sich die Konfigurationsdatei “wp-config.php”. Diese lädt man sich vom Server auf die Festplatte herunter. Wichtig: Bitte unbedingt vor Änderungen immer eine Sicherheitskopie der Datei machen!

Nun öffnet man also die wp-config.php mit einem normalen Texteditor. Hier eine Beispieldatei ohne Angaben – die wp-config.php auf euerem Server enthält normal noch alle persönlichen Einstellungen für die Datenbank, den Sicherheitsschlüssel usw…

<?php
/**
 * In dieser Datei werden die Grundeinstellungen für WordPress vorgenommen.
 *
 * Zu diesen Einstellungen gehören: MySQL-Zugangsdaten, Tabellenpräfix,
 * Secret-Keys, Sprache und ABSPATH. Mehr Informationen zur wp-config.php gibt es
 * auf der {@link http://codex.wordpress.org/Editing_wp-config.php wp-config.php editieren}
 * Seite im Codex. Die Informationen für die MySQL-Datenbank bekommst du von deinem Webhoster.
 *
 * Diese Datei wird von der wp-config.php-Erzeugungsroutine verwendet. Sie wird ausgeführt,
 * wenn noch keine wp-config.php (aber eine wp-config-sample.php) vorhanden ist,
 * und die Installationsroutine (/wp-admin/install.php) aufgerufen wird.
 * Man kann aber auch direkt in dieser Datei alle Eingaben vornehmen und sie von
 * wp-config-sample.php in wp-config.php umbenennen und die Installation starten.
 *
 * @package WordPress
 */

/**  MySQL Einstellungen - diese Angaben bekommst du von deinem Webhoster. */
/**  Ersetze database_name_here mit dem Namen der Datenbank, die du verwenden möchtest. */
define('DB_NAME', 'XYZDatenbankname');

/** Ersetze username_here mit deinem MySQL-Datenbank-Benutzernamen */
define('DB_USER', 'XYZUsername');

/** Ersetze password_here mit deinem MySQL-Passwort */
define('DB_PASSWORD', 'XYZPassword');

/** Ersetze localhost mit der MySQL-Serveradresse */
define('DB_HOST', 'localhost');

/** Der Datenbankzeichensatz der beim Erstellen der Datenbanktabellen verwendet werden soll */
define('DB_CHARSET', 'utf8');

/** Der collate type sollte nicht geändert werden */
define('DB_COLLATE', '');

/**#@+
 * Sicherheitsschlüssel
 *
 * Ändere jeden KEY in eine beliebige, möglichst einzigartige Phrase.
 * Auf der Seite {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * kannst du dir alle KEYS generieren lassen.
 * Bitte trage für jeden KEY eine eigene Phrase ein. Du kannst die Schlüssel jederzeit wieder ändern,
 * alle angemeldeten Benutzer müssen sich danach erneut anmelden.
 *
 * @seit 2.6.0
 */
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

/**#@-*/

/**
 * WordPress Datenbanktabellen-Präfix
 *
 *  Wenn du verschiedene Präfixe benutzt, kannst du innerhalb einer Datenbank
 *  verschiedene WordPress-Installationen betreiben. Nur Zahlen, Buchstaben und Unterstriche bitte!
 */
$table_prefix  = 'wp_';

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 */
define('WP_DEBUG', false);

/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
  define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

Nun stetzt man die folgenden beiden Zeilen mit in die wp-config.php Datei.

define('WP_MEMORY_LIMIT', '256M'); 
define('WP_MAX_MEMORY_LIMIT', '256M');

Am besten vor den MySQL Einstellungen, das sieht dann in der wp-config.php Datei so aus:

<?php
/**
 * In dieser Datei werden die Grundeinstellungen für WordPress vorgenommen.
 *
 * Zu diesen Einstellungen gehören: MySQL-Zugangsdaten, Tabellenpräfix,
 * Secret-Keys, Sprache und ABSPATH. Mehr Informationen zur wp-config.php gibt es
 * auf der {@link http://codex.wordpress.org/Editing_wp-config.php wp-config.php editieren}
 * Seite im Codex. Die Informationen für die MySQL-Datenbank bekommst du von deinem Webhoster.
 *
 * Diese Datei wird von der wp-config.php-Erzeugungsroutine verwendet. Sie wird ausgeführt,
 * wenn noch keine wp-config.php (aber eine wp-config-sample.php) vorhanden ist,
 * und die Installationsroutine (/wp-admin/install.php) aufgerufen wird.
 * Man kann aber auch direkt in dieser Datei alle Eingaben vornehmen und sie von
 * wp-config-sample.php in wp-config.php umbenennen und die Installation starten.
 *
 * @package WordPress
 */

define('WP_MEMORY_LIMIT', '256M'); 
define('WP_MAX_MEMORY_LIMIT', '256M');

/**  MySQL Einstellungen - diese Angaben bekommst du von deinem Webhoster. */
/**  Ersetze database_name_here mit dem Namen der Datenbank, die du verwenden möchtest. */
define('DB_NAME', 'XYZDatenbankname');

/** Ersetze username_here mit deinem MySQL-Datenbank-Benutzernamen */
define('DB_USER', 'XYZUsername');

/** Ersetze password_here mit deinem MySQL-Passwort */
define('DB_PASSWORD', 'XYZPassword');

....
....

Welchen Wert man dort einträgt ist erst mal egal, mindestens 128M sollten es aber schon sein. Mit 256M oder 512M ist man aber auf der sicheren Seite.

Nun die config-Datei abspeichern und wieder auf den Server hochladen in das gleiche WordPress-Hauptverzeichnis wie vorher.

Ist das memory_limit nun ausreichend groß und der Hostinganbieter stellt auch soviel zur Verfügung, dann sollte die Fehlermeldung jetzt verschwunden sein. Ist das nicht der Fall, dann sollte man evtl. nachsehen, ob es einen Tarif mit mehr Speicherlimit beim Hoster gibt und in diesen besseren Tarif wechseln.

Fatal error immer noch da – evtl. ist ein Plugin schuld ?

Manchmal kann der PHP Fatal error: Allowed memory size of xxx bytes exhausted auch in Zusammenhang mit einem der installierten Plugins auftreten. Dann ist es am besten man deaktiviert erstmal alle Plugins und fängt danach an, die Plugins der Reihe nach wieder erstmal einzeln zu aktivieren. So kann man am einfachsten schauen ob der Fehler erneut auftritt – oder nicht.

Hat man als Fehler ein bestimmtes Plugin ausfindig gemacht, dann sollte man es besser deaktiviert lassen. Evlt. kann man sich ja auf die Suche nach einem weniger speicherhungrigen Plugin machen und dieses dann als Alternative installieren.

0 Kommentare

Einen Kommentar hinterlassen


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.