Skip to content

Config-Dateien

  • Directoryconfig
    • config.yaml
    • parameters.yaml
  • Directorycontao
    • config.yaml
    • Directorydca
      • tl_content.php
      • tl_news.php
      • tl_member.php
    • Directorylanguages
      • Directoryde
        • default.php
        • default.xlf
  • Directorysystem
    • Directoryconfig
      • localconfig.php

Quellen:
trakked Blogbeitrag

Pfad: config/config.yaml Einstellungen in der Contao-Doku

Theoretisch ist das die einzige Konfigurationsdatei in Contao. Da drinnen kann alles gemacht werden. Punkt.
Außer wir wollen versionieren … dann würden z.B. Datenbank-Zugangsdaten in der config.yaml plötzlich auf GitHub stehen und das wollen wir gar nicht (Git vergisst nicht!)

Daher schreiben wir sensible Daten in andere Dateien und referenzieren diese mit Platzhaltern in der config.yaml.

Die config.yaml wird nicht automatisch angelegt, das müssen wir bei Bedarf selbst machen.

Contao lädt für die Produktionsumgebung automatisch die config_prod.yaml und für die Entwicklungsumgebung die config_dev.yaml. Fallback, falls diese nicht vorhanden sind, ist die config.yaml. So können je nach Umgebung gewisse Parameter angepasst werden.

// Indexierung von geschützten Seiten aktivieren
contao:
search:
index_protected: true
// Zentrale Bildgrößen konfigurieren
contao:
image:
sizes:
header_image:
width: 1920
height: 600
resizeMode: crop
// Standard-Konfiguration für Contao anzeigen:
php vendor/bin/contao-console config:dump-reference contao
// die aktuelle Konfiguration anzeigen:
php vendor/bin/contao-console debug:config contao

Pfad: config/parameters.yaml

Die parameters.yaml ist seit Contao 4.13 veraltet (funktioniert aber in Contao 5 immer noch). Hier wurden Datenbank-Zugangsdaten, SMTP-Daten, … etc. gespeichert (weshalb sie auch niemals ins Git wandern sollte). Sie wird durch die .env.local abgelöst.

Pfad: /.env und /.env.local

Diese Dateien liegen direkt im Hauptverzeichnis. Bei der Installation mit dem Manager (ab Version 1.8) werden sie automatisch erzeugt und die Datenbankverbindung wird in der .env.local abgelegt.

Der Unterschied zwischen der parameters.yaml und der .env.local ist, dass die parameters.yaml nicht zur Laufzeit geändert werden kann. Nach einer Datenänderung muss immer der Prod-Cache gelöscht werden. Bei der .env.local ist das nicht mehr nötig. Daher kann der CM jetzt auf die DB-Zugangsdaten zugreifen.

Die .env-Dateien enthalten sogenannte Umgebungsvariablen.

Umgebungsvariablen sind Variablen, die auf Betriebssystem-Ebene, pro Benutzer oder sogar pro Prozess definiert werden können. Das ist sehr praktisch, da die Contao-Installation damit für den Betrieb mit Containern vorbereitet wird. Dieser Standard ist plattformübergreifend.

Auf einem Shared Hosting können eigentlich keine echten Umgebungsvariablen gesetzt werden. Mit der .env-Datei liefert Contao aber eine Möglichkeit mit, Umgebungsvariablen zu definieren. Contao interpretiert diese so als wären sie echt.

Die .env-Datei:

  • wird ins Git Repository comitted und enthält keine echten Werte
  • dient zur Dokumentation erforderlicher Umgebungsvariablen
  • zeigt Beispielwerte und Struktur

Die .env.local-Datei:

  • wird nicht ins Git Repository committed (und sollte daher in der .gitignore stehen)
  • enthälte echte Werte, diese überschreiben die dokumentierten Platzhalter in der .env
  • enthält sensible Daten wie Passwörter und API-Keys
  • enthält entwickler-spezifische Einstellungen

APP_SECRET wird für viele Anwendungsfälle benutzt und sollte nicht ohne weiteres verändert werden. Also einfach in Ruhe lassen.

  • CSFR-Token
  • URL-Signing
  • diverse Erweiterungen
  • “Remember Me” Cookies
  • u.v.m.

Informationen zur Datenbankverbindung und zum E-Mail-Versand
DATABASE_URL generieren
MAILER_DSN generieren

DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name"
MAILER_DSN="smtp://user:password@smtp.example.com:587"

In der config.yaml können beliebige eigene Variablen referenziert werden, die z.B. in der .env definiert werden:

.env
MYADMIN_EMAIL=admin@demo.de
config/config.yml
contao:
localconfig:
adminEmail: '%env(MYADMIN_EMAIL)%'

.yml ist die alte Schreibweise, die verwendet wurde, als Dateierweiterungen nur drei Buchstaben haben durften. Wir verwenden heute .yaml.