WordPress: wp-config.php für unterschiedliche Umgebungen aufteilen
Für die Einstellungen von WordPress, die über die wp-config.php
gesetzt werden, wird im normal Fall nicht unterschieden in welcher Umgebung (Lokal, Staging oder Live) das WordPress läuft. Jedoch haben die Umgebungen oft nicht die gleichen Einstellungen. Ein gutes Beispiel sind die Anmeldedaten für die Datenbank. In meinem Fall hat die lokale Datenbank andere Anmeldedaten als die Datenbank auf dem Live-Server.
Da ich die wp-config.php
immer gerne mit in das Git-Repository aufnehme, entstehen dabei mehrere Probleme. Im schlechtesten Fall liegt in jeder Umgebung, eine veränderte wp-config.php
, die nicht commited ist. Denn die Anmeldedaten für die Datenbank gehören nicht in das Repository unabhängig davon, ob dies privat oder öffentlich ist. Zusätzlich kommen aber noch Einstellungen hinzu, die auf allen Umgebungen gleich sein sollen.
Für die Lösung des Problems habe ich angefangen, die Konfigurationsdatei von WordPress aufzuteilen. Es gibt die klassische wp-config.php
, in der allgemeine Einstellungen gespeichert sind, die sich nicht unterscheiden. Für alle weiteren Daten wie z.B. die Datenbank oder den Debug-Modus gibt es eine weitere Datei, die die Einstellungen enthält, die sich unterscheiden und einmalig für das System sind, auf dem das WordPress läuft.
Zusätzlich zu der wp-config.php
gibt es in meinem Setup die Dateien wp-config.local.php
und wp-config.example.php
. In der Datei wp-config.local.php
werden alle Einstellungen für die Umgebung gespeichert. Diese Datei wird auch von Git ignoriert. Als Vorlage dient die wp-config.example.php
. Diese wird kopiert und umbenannt, wenn das WordPress auf einer neuen Umgebung eingerichtet wird.
Am Anfang der wp-config.php
werden die Einstellungen für die Umgebung geladen. Die ganze Magie passiert in nur 3 Zeilen.
if ( file_exists( dirname( __FILE__ ) . '/wp-config.local.php' ) ) {
require_once( dirname( __FILE__ ) . '/wp-config.local.php' );
}
So viel Magie ist es dann doch nicht. Es wird überprüft, ob die wp-config.local.php
vorhanden ist. Ist dies der Fall wird diese geladen und die Einstellungen für die Umgebung stehen auf dem bekannten Weg zur Verfügung.
Über diesen Weg lassen sich die Einstellungen für WordPress sauber trennen und man hat die Möglichkeit allgemeine Einstellungen zu versionieren ohne sich Gedanken zu machen, dass eventuell doch Anmeldedaten ins Repository aufgenommen werden.