Ändern der .env Datei aus einem Controller

Bei einem meiner aktuellen Projekte stand ich vor dem Problem, dass ich die Inhalte der .env-Datei aus einem Controller heraus ändern musste.

Hintergrund dafür war, dass ich ein Setup-Script geschrieben habe, welches dem Nutzer des Programms ein komfortables Webformular bietet, um seine Datenbankinformationen und die Daten des ersten Nutzers bequem über den Webbrowser einzutragen. Da dies nicht von Haus aus mit Laravel möglich ist, habe ich mir etwas einfallen lassen.

Update: Mittlerweile habe ich zu diesem Thema selbst ein Package geschrieben und auf GitHub veröffentlicht. Mehr dazu in im Beitrag „env Datei in Laravel dynamisch ändern“.

das Problem

Ich habe lange gesucht und nichts gefunden. Auch auf der Github-Seite des Entwicklers hinter der .env-Bibliothek wurde ich nicht fündig.

die Lösung

Ich benötigte diese Funktionalität nur in meinem SetupController. Natürlich ist es denkbar, diese Funktion in eine separate Hilfs-Klasse auszulagern. Mein Ansatz soll hier nur als eine möglich Lösung dienen und ist noch ausbaufähig.

Die Methode nimmt ein Array mit den neuen Daten entgegen (siehe Beispiel weiter unten). Anschließend liest die Methode die .env Datei aus dem Wurzelverzeichnis des Laravel Projekts ein und prüft jedes Element, ob es überschrieben werden soll.

Wichtig: es werden NUR die übergebenen Werte geändert, der Rest bleibt unverändert.

Nun zum Code:

Anwendungsbeispiel

Im Beispiel siehst du eine weitere Methode des SetupControllers. Diese Methode kann z.B. über eine Post-Route aufgerufen werden. Hier wird der Methode ein Array mit den zu aktualisierenden Werten übergeben.

Wichtig: Als Array-Key muss dieselbe Bezeichnung verwendet werden, wie sie auch in der .env Datei im Wurzelverzeichnis von Laravel liegt.

Ich hoffe, dass dir diese Lösung weiterhilft. Ich freue mich über Anregungen und Tipps.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.