Contao richtig Konfigurieren


Gepostet von Andreas Nölke am

Wie habt ihr es mit euren Contao Installationen und dem Workflow?

Bei mir hat sich gezeigt, dass ich gerne eine Lokale Spielwiese habe und diese nach belieben anpassen kann. Natürlich ist jede Contao Installation zusätzlich in einem Repository um die Versionierung sicherzustellen. Somit können geänderte Dateien schneller hochgeladen werden. Hierbei ist es mir auch schonmal passiert, dass ich die "localconfig.php" mit hochgeladen habe.

Da in dieser Datei ja die Datenbank Verbindung drinsteht und eventuell das Cachen deaktiviert wurde, muss man diese Änderung online wieder vornehmen. Das ist ärgerlich und kostet wertvolle Zeit, da in dieser Zeit die Webseite nicht erreichbar ist.

Wie kann ich also meine localconfig schützen?

Contao beschreibt die Datei selbständig beim ändern von Parametern in den Einstellungen. Es können auch Erweiterung eine Beschreibung auslösen um die Konfiguration zu beeinflussen. Mit einem kleinen Trick können diverse Änderungen statisch bleiben und werden von Contao nicht überschrieben. Wenn man die Datei "localconfig.php" öffnet, diese befindet sich in "/system/config/", sieht man den kompletten Aufbau der Datei:

<?php

### INSTALL SCRIPT START ###
$GLOBALS['TL_CONFIG']['licenseAccepted'] = true;

### INSTALL SCRIPT STOP ###

Ich habe es etwas abgekürzt. Beginnen tut die Datei natürlich mit dem einleitenden PHP Tag. Dann folgt ein Kommentar, dann alle Konfigurationsvariablen und wieder ein Kommentar.

Wozu sind die Kommentare gut?

Die Kommentare dienen für Contao als Begrenzung des Schreibbereichs. Contao beschreibt die Datei nur zwischen diesen beiden Kommentaren:

<?php
### INSTALL SCRIPT START ###

//nur hier schreibt Contao die localconfig.php

### INSTALL SCRIPT STOP ###

Das bedeutet für uns: Alles oberhalb des ### INSTALL SCRIPT START ### und unterhalb des ### INSTALL SCRIPT STOP ### Kommentars wird von Contao nicht überschrieben.

Meine localconfig.php wurde von mir folgendermaßen angepasst:

<?php

### INSTALL SCRIPT START ###

//nur hier schreibt Contao die localconfig.php

### INSTALL SCRIPT STOP ###

if($_SERVER["SERVER_NAME"]=="localhost" || substr($_SERVER["SERVER_ADDR"], 0, 8)=="192.0.0.")
{
    $GLOBALS['TL_CONFIG']['websitePath'] = '';
    $GLOBALS['TL_CONFIG']['dbDriver'] = '';
    $GLOBALS['TL_CONFIG']['dbHost'] = '';
    $GLOBALS['TL_CONFIG']['dbUser'] = '';
    $GLOBALS['TL_CONFIG']['dbDatabase'] = '';
    $GLOBALS['TL_CONFIG']['dbPass'] = '';
    $GLOBALS['TL_CONFIG']['dbPort'] = '';
    $GLOBALS['TL_CONFIG']['debugMode'] = false;
    $GLOBALS['TL_CONFIG']['displayErrors'] = true;
    $GLOBALS['TL_CONFIG']['cacheMode'] = 'none';
    $GLOBALS['TL_CONFIG']['bypassCache'] = true;
}
else
{
    $GLOBALS['TL_CONFIG']['installCount'] = 10;
    $GLOBALS['TL_CONFIG']['websitePath'] = '';
    $GLOBALS['TL_CONFIG']['dbDriver'] = '';
    $GLOBALS['TL_CONFIG']['dbHost'] = '';
    $GLOBALS['TL_CONFIG']['dbUser'] = '';
    $GLOBALS['TL_CONFIG']['dbPass'] = '';
    $GLOBALS['TL_CONFIG']['dbDatabase'] = '';
    $GLOBALS['TL_CONFIG']['dbPort'] = '';
    $GLOBALS['TL_CONFIG']['bypassCache'] = false;
}

Mit dem If clause stelle ich sicher, dass nur auf meinem localhost oder meinen lokalen IP Adressen der obere Konfigurationsblock genommen wird. Hier habe ich natürlich einen anderen DB Zugriff wie online und möchte gerne dass nichts gecached wird.

Nun haben wir sichergestellt, dass nach einem Upload auch unser Contao noch einwandfrei funktioniert.

Einziger Nachteil: Diverse Änderungen werden von uns immer überschrieben, es sei denn man kopiert den Bereich vor den Kommentarbereich ### INSTALL SCRIPT START ###.

Viel Spaß damit.


Kommentare



Ich möchte mich bedanken für diesen Hinweis. Habe lange nach Informationen im Forum gesucht. Meine localconfig.php wurde auch immmer fehlerhaft überschrieben. Ich hoffe, dass es jetzt so bleibt. Noch mal vielen Dank.