Laravel liest die .env-Datei nach der Änderung nicht

Laravel Is Not Reading



Problem

Dies ist ein ziemlich häufiges Problem, das bei neuen Laravel-Entwicklern auftritt.

Viele Leute haben versucht, ihre .env-Datei zu aktualisieren, nur um zu sehen, dass beim Aktualisieren ihrer Anwendung die .env-Konfigurationswerte nicht angezeigt werden.







Und was noch interessanter ist, ist, dass dies ziemlich oft angezeigt wird, nachdem Sie Ihre Laravel-Version aktualisiert haben.



Zum Beispiel hätten Sie dies in Ihrer .env-Datei:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Dann hätten Sie natürlich in der Datei config/database.php Folgendes:





'mysql'=> [
' Datenbank '=>env('DB_DATABASE','Schenkel'),
'Nutzername'=>env('DB_USERNAME','Schenkel'),
]

forge steht hier für Standardwerte. Dies bedeutet, dass diese Werte verwendet werden, falls Sie Ihre DB_DATABASE und DB_USERNAME Werte in Ihrer .env-Datei. Diese Informationen werden in Kürze hilfreich sein.

Nun, wie Sie wissen, dass Sie dieses spezifische Problem haben, ist, wenn Sie auf die folgende Ausnahme stoßen:



PDOException: SQLSTATE[HY000] [1045]Zugriff verweigert für Benutzer ‘lar’@’localhost’
( mit Passwort : NEIN )

Dies zeigt deutlich, dass Ihre Laravel-Anwendung den Standardwert von Ihrem einzieht config/database.php Datei und nicht von Ihrer .env .

Bevor Sie etwas anderes tun, können Sie auch versuchen, dieses Problem mit PHP Artisan Tinker zu überprüfen:

>>>env('DB_DATABASE')
=> Null
>>>getenv('DB_DATABASE')
=> falsch
>>>Konfiguration(' Datenbank .Verbindungen.mysql. Datenbank ')
=>Schenkel
>>>dd($ _ENV)
[]

Sie werden oft feststellen, dass auch die folgenden Schritte keinen Unterschied machen. Entwickler versuchen jedoch, ihre Konfiguration zu testen, indem sie eine komplett neue Laravel-Installation ausführen und einfach den alten App-Ordner kopieren. Sie führen keine Composer-Paketinstallationen aus oder tun etwas anderes.

Sofern Sie nicht unter Linux arbeiten (ich werde Ihnen später sagen, warum), werden Sie keine Änderungen sehen.

Lösung

Wie immer gibt es viele Dinge, die Sie tun können, um dieses Problem zu lösen, aber einige davon sind mit größerer Wahrscheinlichkeit erfolgreich.

Löschen Sie Ihren Konfigurationscache

Wenn nicht, müssen Sie zunächst Ihren Konfigurationscache leeren, bevor Sie etwas anderes tun können.

Da unser Code heutzutage so viele Bibliotheken verwendet, sind wir gezwungen, Dinge zwischenzuspeichern, um während der Laufzeit schnell darauf zugreifen zu können.

Ich hatte persönlich Probleme damit unter Windows und Mac, aber mir ist aufgefallen, dass diese Konfigurationsdateien unter Linux (Ubuntu) aus irgendeinem Grund entweder mit einem Hook gelöscht werden oder überhaupt nicht zwischengespeichert werden, weil ich dies tun konnte Laden Sie die Anwendung mit neuen .env-Werten neu, ohne Folgendes zu tun.

Stellen Sie sicher, dass Sie Ihren Konfigurationscache leeren, indem Sie die folgenden Befehle ausführen:

php Handwerker-Konfiguration:Zwischenspeicher
php Handwerker-Konfiguration:klar

Suchen Sie in Ihrer .env-Datei nach Leerzeichen

Die nächste Lösung besteht darin, Leerzeichen in Ihrer .env-Datei zu haben. Und dieses, wenn die meisten Leute scheitern und anfangen, sich die Haare zu reißen.

Es ist sehr leicht, dies zu übersehen, aber als Beispiel könnten Sie in Ihrer .env-Datei Folgendes haben:

SITE_NAME=Meine Laravel-Anwendung

Dies allein funktioniert nicht, da Leerzeichen die .env-Datei beschädigen.

Sie müssen Ihre Werte wie folgt in die Anführungszeichen einschließen:

SITE_NAME=Meine Laravel-Anwendung

Diesmal sollte alles gut gehen.

Stellen Sie einfach sicher, dass Sie Ihren Konfigurationscache jedes Mal leeren, wenn Sie eine Änderung vornehmen. Wir können dies wie zuvor tun:

php Handwerker-Konfiguration:Zwischenspeicher
php Handwerker-Konfiguration:klar