Laravel liest nicht .Env -Datei nach der Änderung

Laravel liest nicht .Env -Datei nach der Änderung

Problem

Dies ist, wenn ein ziemlich häufiges Thema, das unter neuen Laravel -Entwicklern auftaucht.

Viele Leute haben versucht, ihre zu aktualisieren .Env -Datei nur um das zu sehen, wenn sie ihre Anwendung aktualisieren, die .Env -Konfigurationswerte werden nicht angezeigt.

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

So hätten Sie dies zum Beispiel in Ihrem .Env -Datei:

Db_database = laraveldb
Db_username = laraveluser

Dann natürlich in der Konfiguration/Datenbank.PHP -Datei Sie hätten Folgendes:

'MySQL' => [
'Datenbank' => env ('db_database', 'lar'),
'Benutzername' => env ('db_username', 'lar'),
]

Forge hier steht für Standardwerte. Dies bedeutet, dass diese Werte verwendet werden, falls Sie Ihre nicht bereitgestellt haben Db_database Und Db_username Werte in Ihrem .Env -Datei. Diese Informationen werden ein wenig hilfreich sein.

Nun, wie Sie wissen, dass Sie dieses spezifische Problem haben, ist, wenn Sie die folgende Ausnahme treffen:

PDOException: SQLState [HY000] [1045] Zugriff für den Benutzer 'lar'@'localhost'
(Verwenden von Passwort: Nein)

Dies zeigt deutlich, dass Ihre Laravel -Anwendung den Standardwert von Ihrem abzieht Konfiguration/Datenbank.Php Datei und nicht von Ihrem .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
>>> config ('Datenbank.Verbindungen.Mysql.Datenbank')
=> "Lar"
>>> dd ($ _ env)
[]

Sie werden oft sehen, dass das Folgende auch keinen Unterschied macht. Entwickler versuchen jedoch, ihre Konfiguration zu testen, indem sie eine völlig neue Laravel -Installation ausführen und einfach den alten App -Ordner kopieren. Sie führen keine Komponist -Paketinstallationen aus oder machen nichts anderes.

Es sei denn, Sie sind unter Linux (ich werde Ihnen sagen, warum etwas später), 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 von ihnen sind eher erfolgreich.

Löschen Sie Ihren Konfigurations -Cache

Wenn Sie nicht nicht der Fall sind, müssen Sie Ihren Konfigurationscache löschen, bevor Sie etwas anderes tun können.

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

Ich persönlich hatte Probleme damit unter Windows und Mac. Ich habe jedoch festgestellt Laden Sie die Anwendung mit neu neu .Env -Werte ohne Folgendes zu tun.

Stellen Sie sicher, dass Sie Ihren Konfigurations -Cache löschen, indem Sie die folgenden Befehle ausführen:

PHP Artisan Config: Cache
PHP Artisan Config: Clear

Überprüfen Sie nach leeren Räumen in Ihrem .Env -Datei

Die nächste Lösung besteht darin, weiße Räume in Ihrem zu haben .Env -Datei. Und dieser, wenn die meisten Menschen versagen und sich ihre Haare zerreißen.

Es ist sehr einfach, dies zu übersehen, aber als Beispiel, was Sie in Ihrem haben könnten .Die Env -Datei ist so etwas:

Site_Name = meine Laravel -Anwendung

Dies allein wird nicht funktionieren, da weiße Räume die korrupt werden .Env -Datei.

Was Sie tun müssen, ist, Ihre Werte in die solchen Zitate zu wickeln:

Site_name = "Meine Laravel -Anwendung"

Diesmal sollte alles gut funktionieren.

Stellen Sie einfach sicher, dass Sie Ihren Konfigurations -Cache jedes Mal löschen, wenn Sie eine Änderung vornehmen. Wir können das gleich machen wie zuvor:

PHP Artisan Config: Cache
PHP Artisan Config: Clear