Umgebungsvariablen sind Werte, die eine Anwendung aus ihrer Umgebung liest, statt sie im Code zu führen. Damit läuft dasselbe Paket auf dem eigenen Rechner, auf der Testumgebung und draußen, jeweils mit eigenen Zugängen.
- Umgebungsvariablen
Werte, die eine Anwendung aus ihrer Umgebung liest, statt sie im Code zu führen.
Beispiel: „Die Umgebungsvariablen auf dem Server nannten eine andere Datenbank als die Datei auf dem Rechner.“Englisch environment variables. Lokal stehen sie meist in einer Datei namens .env, auf dem Server in der Konfiguration des Dienstes oder in der Oberfläche des Hosters.
Abgrenzung zur Secrets-Verwaltung: Diese kümmert sich um das Aufbewahren der geheimen Werte. Umgebungsvariablen sind der Weg, auf dem sie in die Anwendung kommen.
Was in Umgebungsvariablen gehört
Alles, was sich zwischen den Umgebungen unterscheidet: Zugang zur Datenbank, Adresse der Website, Schlüssel für Dienste, Postausgang, Betriebsart und Schalter für das Protokollieren.
Nicht hinein gehört, was überall gleich ist. Wer jede Einstellung zur Variable macht, bekommt zwei Dutzend Werte, die auf jeder Umgebung einzeln stimmen müssen.
Warum Umgebungsvariablen nicht ins Repository gehören
Weil sie Zugangsdaten tragen. Eine Datei mit Schlüsseln im Repository steht in der Geschichte des Projekts und bleibt dort, auch wenn sie später entfernt wird; jeder mit Lesezugriff kommt daran.
Deshalb liegt im Projekt allein eine Beispieldatei mit leeren Werten, und die echte Datei steht in der Ausschlussliste. Die Werte selbst setzt der Server, siehe Deploy-Skript.
Die Falle beim Zwischenspeichern der Konfiguration
Viele Anwendungen schreiben ihre Konfiguration beim Ausrollen in einen Zwischenspeicher. Danach liest der Code die Variablen aus dieser Datei und schaut die Umgebung nicht mehr an.
Wer dann eine Variable ändert und den Zwischenspeicher nicht neu schreibt, sucht den Fehler im Code. In Laravel heißt dieser Schritt config:cache, und er gehört in genau dieser Reihenfolge ins Deploy-Skript.