WordPress Memory Limit erhöhen – so geht’s richtig

Ein Fatal error: Allowed memory size exhausted in WordPress ist unangenehm, aber lösbar. Das Problem: WordPress, PHP und der Hoster haben jeweils eigene Wege, das Memory-Limit zu setzen – und nicht alle davon greifen in jeder Umgebung.

Ich erkläre, wo du ansetzen kannst und warum manche Optionen schlicht nichts bewirken.

Warum das Limit überhaupt greift

PHP begrenzt den Arbeitsspeicher pro Prozess. Standard sind bei vielen Hostern 128 MB – was für einfache WordPress-Installationen reicht, bei WooCommerce mit mehreren Plugins aber schnell zu eng wird.

WordPress kann innerhalb dieses PHP-Limits arbeiten, es aber nicht überschreiten. Das heißt: WP_MEMORY_LIMIT in der wp-config.php zu setzen nützt nichts, wenn PHP selbst auf 128 MB gedeckelt ist.

Den tatsächlich gesetzten Wert kannst du mit diesem Snippet temporär im Footer ausgeben lassen:

add_action( 'wp_footer', function() {
	if ( ! current_user_can( 'manage_options' ) ) {
		return;
	}

	echo '<pre>';
	echo 'WP_MEMORY_LIMIT: ' . WP_MEMORY_LIMIT . "\n";
	echo 'WP_MAX_MEMORY_LIMIT: ' . WP_MAX_MEMORY_LIMIT . "\n";
	echo 'PHP memory_limit: ' . ini_get( 'memory_limit' ) . "\n";
	echo '</pre>';
});

Wenn PHP memory_limit trotz gesetzter WordPress-Konstanten auf 128M steht, kommt die Begrenzung vom Hoster – und du musst woanders ansetzen.

Option 1: wp-config.php

Der erste Anlaufpunkt. Zwei Konstanten, eine für das Frontend, eine für den Admin-Bereich:

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

Wirkt nur innerhalb des von PHP gesetzten Rahmens. Wenn PHP selbst auf 128M begrenzt ist, bringen diese Konstanten nichts.

Option 2: .htaccess

Bei Apache mit mod_php lässt sich das Limit über die .htaccess setzen:

php_value memory_limit 256M

Bei PHP als FastCGI oder PHP-FPM – was heute der Standard ist – führt das zu einem 500-Fehler. In dem Fall diese Zeile sofort wieder entfernen.

Option 3: .user.ini

Die .htaccess-Alternative für PHP-FPM. Eine Datei namens .user.ini ins Domain-Root legen:

memory_limit = 256M

Wichtig: PHP-FPM cached diese Datei. Die Änderung greift erst nach einigen Minuten – nicht sofort testen und für kaputt halten.

Option 4: php.ini im Domain-Root

Manche Hoster erlauben eine eigene php.ini pro Domain. Gleicher Inhalt wie bei .user.ini:

memory_limit = 256M

Ob das funktioniert, hängt vom Hoster und der PHP-Konfiguration ab. Einfach ausprobieren – kaputt machen kann man damit nichts.

Option 5: Hosting-Oberfläche (Plesk, cPanel)

Die zuverlässigste Methode bei Managed Hosting. In Plesk unter Domains → [Domain] → PHP-Einstellungen lässt sich memory_limit direkt setzen. Das überschreibt alle anderen Einstellungen.

Bei cPanel findet sich das unter Select PHP Version → Options.

Welcher Wert ist sinnvoll?

256 MB sind für WooCommerce-Installationen mit mehreren Plugins der realistische Mindestwert. 128 MB reichen für solche Setups schlicht nicht mehr aus.

Ob das Limit wirklich ausgenutzt wird, lässt sich mit einem einfachen Shutdown-Hook messen:


add_action( 'shutdown', function() {
	if ( ! current_user_can( 'manage_options' ) ) {
		return;
	}

	$mem = round( memory_get_peak_usage( true ) / 1024 / 1024, 2 );
	error_log( 'Peak Memory: ' . $mem . ' MB' );
});

Der Peak-Wert landet im debug.log. Wenn der regulär bei 120–125 MB liegt, ist der nächste Crash nur eine Frage der Zeit.

Fazit

Welche Option greift, hängt vom Hosting-Setup ab. Bei PHP-FPM – heute die Regel – ist .user.ini oder die Hosting-Oberfläche der richtige Weg. Die wp-config.php-Konstanten allein lösen das Problem nicht, wenn PHP selbst das Limit setzt.