Mit der richtigen PHP-Version, sauber getrennten PHP-FPM-Pools und OPcache läuft WordPress schneller und sicherer. PHP ist der Motor von WordPress. Version und Konfiguration haben grossen Einfluss auf Geschwindigkeit, Stabilität und Sicherheit.
Welche Version?
WordPress läuft technisch ab PHP 7.4, empfohlen ist 8.3 oder neuer; das Hosting-Handbuch von WordPress.org nennt für Neuinstallationen 8.4 oder 8.5. PHP 8.2 erhält nur noch bis 31.12.2026 Sicherheitsfixes. Alles darunter ist end-of-life.
Vor einem Wechsel: Auf Staging testen, Fehlerlog auswerten, Kompatibilität mit PHPCompatibilityWP prüfen:
composer require --dev phpcompatibility/phpcompatibility-wp
vendor/bin/phpcs -p wp-content/plugins/mein-plugin --standard=PHPCompatibilityWP --runtime-set testVersion 8.3-
PHP-FPM-Pools
Pro Site ein eigener Pool mit eigenem Systembenutzer sorgt für Isolation:
[example]
user = example
group = example
listen = /run/php/php8.3-fpm-example.sock
pm = dynamic
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500
request_terminate_timeout = 60s
php_admin_value[open_basedir] = /var/www/example:/tmp
php_admin_value[upload_tmp_dir] = /var/www/example/tmp
pm.max_children grob berechnen: verfügbarer RAM für PHP ÷ durchschnittlicher Speicher pro Prozess (oft 60–120 MB bei WordPress).
OPcache
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.jit=off
- Bei Deployments mit atomaren Symlink-Wechseln
validate_timestamps=0setzen und nach jedem Deploy den FPM-Dienst neu laden. Das ist am schnellsten. - JIT bringt bei WordPress kaum etwas, da die Last I/O- und datenbankgetrieben ist.
- OPcache-Auslastung prüfen:
wp eval 'print_r(opcache_get_status(false));'(zeigt CLI-OPcache; für FPM ein Status-Skript oder Plugin verwenden).
Sicherheitsrelevante Direktiven
expose_php = Off
display_errors = Off
log_errors = On
allow_url_include = Off
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
session.cookie_httponly = 1
session.cookie_secure = 1
Achtung: disable_functions kann Plugins oder WP-CLI-Funktionen brechen (z. B. Backup-Plugins, die exec nutzen). Die CLI-php.ini ist separat und kann freizügiger bleiben.
Limits
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 60
max_input_vars = 3000
Weiterführende Artikel
- Shared, VPS, Managed oder Container: Hosting-Modelle im Vergleich
- Caching-Ebenen: Page, Object (Redis), OPcache und CDN
- WordPress 7.x für Power User: Was sich geändert hat