Drupal konfigurieren via settings.php

Drupal konfigurieren via settings.php

Während der Installation von Drupal werden verschiedene Einstellungen abgefragt und in der Datenbank gespeichert, z.B. der Name der Website oder der Pfad zum temporären Verzeichnis. Und auch später werden Einstellungen, die man vornimmt in der Datenbank abgelegt, wie zum Beispielt das Einschalten der CSS- und Javascript-Kompression. Während der Entwicklung einer Website hat man häufig andere Einstellungen als später auf der Live-Seite oder auch in der Testumgebung für den Kunden. So kann es zum Beispiel sein, dass die Entwicklungsumgebung mit Apache unter Linux läuft, während die Liveseite auf einem Microsoft Internet Information Server (IIS) läuft. In diesem Fall unterscheidet sich z.B. der temporäre Dateipfadt. Während auf dem Apache die Angabe "../.tmp" funktioniert verlangt der IIS etwas in dieser Form "C:\irgend\ein\pfad\drupaltemp". Zieht man nun eine Drupal-Version vollständig, d.h. die Drupal-Files und die Datenbank, vom Apache zum IIS rüber (inkl. Datenbankimport), so wird die Seite nicht fehlerfrei laufen. Nun könnte man den Weg gehen, sich einzuloggen und die Einstellungen von Hand korrigieren. Das ist  mühsam, fehleranfällig und muss man das nach jedem neuen Import wiederholen.

Eleganter und einfacher ist es, solche Einstellungen in der settings.php von Drupal vorzunehmen. Die settings.php sollte bei einem Übertragen der Seite nicht mitgeliefert werden, da darin auch die Zugangsdaten für die Datenbank liegen. Und diese Zugangsdaten lauten in der Regel auf dem anderen System ganz anders. Daher sollte jede Drupal-Instanz eine eigene settings.php besitzen, die bei Übernahme der Seite nicht überschrieben wird. Bei Einsatz eines Versionskontrollsystems wie z.B. git, lässt sich das leicht bewerkstelligen, indem man die settings.php in .gitignore als zu ignorierende Datei einträgt.

Nachdem man auf jeden System eine eigene settings.php-Datei angelegt hat trägt man in diese neben den Zugangssdaten zur Datenbank noch die Variablen ein, die für jedes System individuell lauten sollen. Um die Übersicht zu behalten sollte man seine Einträge an das Ende der settings.php stellen. So sieht jeder später auf einen Blick welche Einstellungen vorgenommen wurden und muss nicht die ganze settings.php durchsuchen. Ein kurzer Kommentar, was die jeweilige Variable bewirkt sollte nicht fehlen. Vor allem neu eingeführte Variablen wie x_frame_options sind am Anfang noch nicht jedem geläufig und spätere User werden dankbar für den Hinweis sein. ;-)

Hier einige Beispieleinträge:

Eintrag in der settings.php des Entwicklungssystems:

$conf['site_name'] = 'Entwicklungsumgebung'; // hier geben wir der Seite einen Namen, der auf den Dev-Status hinweist
$conf['admin_theme'] = 'bartik';  // jeder wählt sein Admin-Theme
$conf['file_temporary_path'] = 'C:\Windows\Temp'; // temporärer Pfad auf dem Entwicklunssystem
$conf['preprocess_js'] = 0 // javascripte nicht aggregieren, komprimieren und cachen
$conf['preprocess_css'] = 0 // CSS nicht aggregieren, komprimieren und cachen
$conf['theme_debug'] = TRUE // debugging für das Theme aktivieren
$conf['x_frame_options'] = ''; // x-Frame-Options deaktivieren, Achtung: sicherheitsrelevant, nicht in Produktivumgebungen verwenden!

Eintrag in der settings.php des Livesystems:

$conf['site_name'] = 'Die neue Kunden Livesite'; // hier der richtige Name der neuen Website
$conf['admin_theme'] = 'customer admin theme';  // hier wird das Admin-Theme für den Kunden vorgegeben
$conf['file_temporary_path'] = '../.tmp'; // temporärer Pfad auf dem Livesystem
$conf['preprocess_js'] = 1 // javascripte aggregieren, komprimieren und cachen
$conf['preprocess_css'] = 1 // CSS aggregieren, komprimieren und cachen
$conf['theme_debug'] = FALSE // debugging für das Theme aktivieren