Zum Hauptinhalt springen

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.php darf 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: 400 oder 440, siehe Dateiberechtigungen und Eigentümer richtig setzen.

Weiterführende Artikel

Quellen und Dokumentation