Memory Limit in WordPress

tl;dr: Manuell gesetzte Wert oder die Default-Werte von WP_MEMORY_LIMIT/WP_MAX_MEMORY_LIMIT haben keinen Effekt, wenn WP_MEMORY_LIMIT/WP_MAX_MEMORY_LIMIT kleiner oder gleich als das Memory Limit von PHP (im Weiteren memory_limit genannt) ist. Sie dienen dazu, zu niedrige Werte von memory_limit dynamisch auf ein empfohlenes Minimum anzuheben.


  • Die Konstante WP_MEMORY_LIMIT kann optional in wp-config.php mit define('WP_MEMORY_LIMIT', 'XXXM'); gesetzt werden.
  • Die Konstante WP_MAX_MEMORY_LIMIT kann optional in wp-config.php mit define('WP_MAX_MEMORY_LIMIT', 'XXXM'); gesetzt werden.
  • Ist WP_MEMORY_LIMIT nicht gesetzt, gilt für dessen Default-Wert:
    • memory_limit, sofern der Wert von memory_limit nicht dynamisch änderbar ist,
    • 64 MB sofern es eine Multisite ist,
    • 40 MB ansonsten.
  • Ist WP_MAX_MEMORY_LIMIT nicht gesetzt, gilt für dessen Default-Wert:
    • memory_limit, sofern der Wert des memory_limit nicht dynamisch änderbar ist oder wenn er unbegrenzt (-1) oder größer gleich 256 MB ist,
    • 256 MB ansonsten.
  • Die Default-Werte wurden in der Vergangenheit immer wieder angehoben.
  • WP_MEMORY_LIMIT verändert überall mit Hilfe der Funktion ini_set() dynamisch memory_limit, wenn WP_MEMORY_LIMIT größer als das aktuelle memory_limit oder wenn WP_MEMORY_LIMIT unbegrenzt (-1) ist.
  • WP_MAX_MEMORY_LIMIT verändert im Backend (genauer: immer dann, wenn die Funktion wp_raise_memory_limit() in unterschiedlichen Kontexten [admin, image] aufgerufen wird) mit Hilfe der Funktion ini_set() dynamisch memory_limit, wenn WP_MAX_MEMORY_LIMIT größer als das aktuelle memory_limit oder wenn WP_MAX_MEMORY_LIMIT unbegrenzt (-1) ist.
  • Die Logik von WP_MAX_MEMORY_LIMIT läuft nach der Logik von WP_MEMORY_LIMIT, sodass WP_MEMORY_LIMIT im Frontend und WP_MAX_MEMORY_LIMIT im Backend greift.
  • Die oben beschriebene Logik findet zum Großteil in der Funktion wp_initial_constants() (/wp-includes/default-constants.php) sowie in wp_raise_memory_limit() (/wp-includes/functions.php) statt.
  • Der Wert memory_limit = XXXM in php.ini definiert memory_limit (nach Neustart des Webdienstes).
  • Der Wert php_value memory_limit XXXM in .htaccess definiert memory_limit für alle PHP-Dateien im Ordner oder dessen Unterordner, in dem sich die .htaccess befindet.
  • Der Webserver kann verhindern, dass der Wert des Memory Limits mit ini_set() verändert wird oder einen vorgegebenen Wert überschreitet (siehe php_admin_value).
  • memory_limit gilt pro Prozess: Eine Erhöhung von memory_limit kann dazu führen, dass die Anzahl der parallelen PHP-Requests abnimmt. Der Wert sollte daher mit bedacht gewählt sein (256 MB, in Ausnahmefällen 512 MB).
  • Im WordPress-Backend unter Werkzeuge > Website-Zustand können die Werte von memory_limit (Abschnitt: Server), sowie von WP_MEMORY_LIMIT und WP_MAX_MEMORY_LIMIT (Abschnitt WordPress-Konstanten) ausgelesen werden.
Zurück