Kennst/Nutzt du schon Dotenv?
Moin!
Wenn du schon sehr lange mit Contao arbeitest, dann wird dir aufgefallen sein, dass es mittlerweile mehrere Dateien gibt, in denen Einstellungen für Contao gespeichert werden bzw. werden können.
Während selbst das Contao 5 Backend immer noch die localconfig.php nutzt, um Einstellungen wie die Zeitzone oder den Standard-Besitzer zu speichern, findest du Datenbank-Zugangsdaten nun eher in der parameters.yml, während du SMTP-Accounts für den Formularversand (gerade bei mehreren Accounts) eher in der config.yml konfigurierst.
Und um die Verwirrung perfekt zu machen, möchte ich dir heute von einem weiteren Ort erzählen, den wir nutzen, um z.B. Datenbank- und SMTP-Zugangsdaten zu speichern.
Gemeint ist die .env bzw. .env.local die mittlerweile in vielen Systemen zur zentralen Verwaltung von Umgebungsvariablen eingesetzt wird.
Sie ersetzt bei uns die parameters.yml (die ursprünglich für die Datenbank, den Mail-Versand und den Secret-Key gedacht war) und enthält darüber hinaus z.B. den Betriebsmodus (APP_ENV), das Installtool-Passwort und die Admin-E-Mail-Adresse, die dann (teilweise) an die config.yml übergeben werden.
Ein Beispiel, wie das aussehen könnte, findest du im Nutshell Starterkit: .env.example in Verbindung mit der config.yml.
Die Verwendung von Dotenv hat für uns 3 ganz entscheidende Vorteile:
- wenn wir 2 oder mehr Umgebungen haben, also zum Beispiel eine STAGE (zur Prüfung und Abnahme von neuen Funktionen) und eine PROD-Umgebung, können wir alle wesentlichen Einstellungen in einer Datei pflegen
- Dotenv (oder besser gesagt die Kombination aus .env und .env.local) bietet uns die Möglichkeit, Zugangsdaten aus dem Git-Repository zu halten. Das gilt auch für lokale Installationen, wenn wir im Team an Projekten arbeiten
- Dotenv wird nicht gecached, d.h. alle Änderungen wirken sich unmittelbar nach dem Speichern aus (was allerdings auch ein Nachteil sein kann)
Die Dotenv hat eigentlich nur einen Haken: Sie kann nicht mit Sonderzeichen umgehen, die man ja gerade bei Passwörtern gerne einsetzt. In diesem Fall muss das Passwort vorher durch einen Url-Encoder laufen, bevor man es verwenden kann.
Wenn du mehr über den Einsatz der Dotenv in Contao erfahren möchtest, dann schau dir doch auch mal die Contao Dokumentation von Umgebungsvariablen genauer an. Oder ich zeige dir (ab Oktober) die Funktionsweise innerhalb eines gemeinsamen Projekts oder einer Contao Schulung 😉.
Viele Grüße,
Dennis
PS: Wenn du noch mehr darüber erfahren möchtest, wie wir mit Contao arbeiten, dann kannst du dich hier für meine kleine E-Mail-Serie anmelden, die in Kürze startet: Wie wir Projekte in Contao entwickeln.