How Can We Help?
Die wp-config.php ist die zentrale Steuerdatei jeder Installation. Viele Härtungs- und Performance-Massnahmen sind hier mit einer Zeile erledigt.
Umgebung
define( 'WP_ENVIRONMENT_TYPE', 'production' ); // local | development | staging | production
Plugins und Code können per wp_get_environment_type() reagieren, z. B. Mailversand oder Indexierung auf Staging unterdrücken.
Sicherheit
define( 'DISALLOW_FILE_EDIT', true ); // Theme-/Plugin-Editor im Backend aus
define( 'DISALLOW_FILE_MODS', true ); // keine Installs/Updates über das Backend (nur bei Deployment per Git/CLI)
define( 'FORCE_SSL_ADMIN', true );
define( 'WP_HTTP_BLOCK_EXTERNAL', true ); // ausgehende HTTP-Requests blockieren …
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' ); // … ausser diesen
Salts und Keys regelmässig erneuern, spätestens nach einem Vorfall: wp config shuffle-salts.
Debugging (nie mit Anzeige in Produktion)
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', '/var/log/wordpress/debug.log' ); // Pfad ausserhalb des Webroots
define( 'WP_DEBUG_DISPLAY', false );
define( 'SCRIPT_DEBUG', true ); // unminifizierte Core-Assets
define( 'SAVEQUERIES', true ); // nur kurzzeitig, kostet Performance
Ein debug.log im Standardpfad wp-content/ ist öffentlich abrufbar und verrät Pfade und Plugin-Details. Deshalb immer einen Pfad ausserhalb des Webroots setzen.
Performance und Ressourcen
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // Admin/Bildverarbeitung
define( 'WP_POST_REVISIONS', 10 );
define( 'AUTOSAVE_INTERVAL', 120 );
define( 'EMPTY_TRASH_DAYS', 14 );
define( 'DISABLE_WP_CRON', true ); // Cron per System-Cron auslösen
define( 'WP_CACHE', true ); // Voraussetzung für advanced-cache.php
Mit DISABLE_WP_CRON braucht es einen echten Cronjob, z. B. */5 * * * * wp --path=/var/www/html cron event run --due-now --quiet.
Updates steuern
define( 'WP_AUTO_UPDATE_CORE', 'minor' ); // true | false | 'minor'
define( 'AUTOMATIC_UPDATER_DISABLED', false );
Struktur und Pfade
wp-config.phpdarf eine Ebene über dem Webroot liegen; WordPress findet sie dort automatisch.- Secrets (DB-Passwort, API-Keys) besser aus Umgebungsvariablen lesen:
define( 'DB_PASSWORD', getenv( 'WP_DB_PASSWORD' ) ); - Dateirechte:
400oder440, siehe Dateiberechtigungen und Eigentümer richtig setzen.
Weiterführende Artikel
- Datei-Editor deaktivieren und Installationen einschränken
- Dateiberechtigungen und Eigentümer richtig setzen
- Datenbank-Optimierung: Autoload, Transients, Indizes und Cron