Laravel nie odczytuje pliku .env po zmianie

Laravel Is Not Reading



Problem

To dość powszechny problem, który pojawia się wśród nowych programistów Laravela.

Wiele osób próbowało zaktualizować swój plik .env tylko po to, aby zobaczyć, że po odświeżeniu aplikacji wartości konfiguracyjne .env nie są wyświetlane.







A co ciekawsze, dość często pojawia się to po uaktualnieniu wersji Laravela.



Na przykład możesz mieć to w swoim pliku .env:



BAZA_DANYCH=laraveldb
DB_USERNAME=laraveluser

Wtedy naturalnie w pliku config/database.php miałbyś to:





„mysql”=> [
' Baza danych '=>zazdrościć(„DB_DATABASE”,'udo'),
'Nazwa Użytkownika'=>zazdrościć(„NAZWA_UŻYTKOWNIKA_DB”,'udo'),
]

forge tutaj oznacza wartości domyślne. Oznacza to, że te wartości będą używane w przypadku, gdy nie podałeś swojego BAZA_DANYCH oraz DB_USERNAME wartości w pliku .env. Te informacje przydadzą się za chwilę.

Teraz, skąd wiesz, że masz ten konkretny problem, jeśli natkniesz się na następujący wyjątek:



PDOException: SQLSTATE[HY000] [1045]Odmowa dostępu dla użytkownik „lar”@”localhost”
( za pomocą hasło : NIE )

To wyraźnie pokazuje, że twoja aplikacja Laravel pobiera domyślną wartość z twojego config/database.php pliku, a nie z pliku .env .

Zanim zrobisz cokolwiek innego, możesz również spróbować zweryfikować ten problem za pomocą majsterkowania rzemieślnika php:

>>>zazdrościć(„DB_DATABASE”)
=> zero
>>>getenv(„DB_DATABASE”)
=> fałszywe
>>>konfiguracja(' Baza danych .połączenia.mysql. Baza danych ')
=>udo
>>>dd($_ENV)
[]

Często zobaczysz, że wykonanie poniższych czynności również nie będzie miało znaczenia. Jednak programiści próbują przetestować swoją konfigurację, uruchamiając zupełnie nową instalację Laravela i po prostu kopiując stary folder aplikacji. Nie uruchamiają żadnych instalacji pakietów kompozytora ani nie robią nic innego.

O ile nie jesteś na Linuksie (powiem ci dlaczego nieco później), nie zobaczysz żadnych zmian.

Rozwiązanie

Jak zawsze, jest wiele rzeczy, które możesz zrobić, aby spróbować rozwiązać ten problem, ale kilka z nich ma większe szanse powodzenia.

Wyczyść pamięć podręczną konfiguracji

Po pierwsze, jeśli nie, musisz wyczyścić pamięć podręczną konfiguracji, zanim będziesz mógł zrobić cokolwiek innego.

Ponieważ nasz kod używa obecnie tak wielu bibliotek, jesteśmy zmuszeni do buforowania rzeczy, aby mieć do nich szybki dostęp w czasie wykonywania.

Osobiście miałem z tym problemy na Windowsie i Macu, jednak zauważyłem, że z jakiegoś powodu w Linuksie (Ubuntu) te pliki konfiguracyjne są albo usuwane z jakimś hakiem, albo w ogóle nie są buforowane, ponieważ byłem w stanie ponownie załaduj aplikację z nowymi wartościami env bez wykonywania następujących czynności.

Upewnij się, że wyczyściłeś pamięć podręczną konfiguracji, uruchamiając następujące polecenia:

php rzemieślnicza konfiguracja:Pamięć podręczna
php rzemieślnicza konfiguracja:jasne

Sprawdź, czy w pliku .env nie ma pustych miejsc

Następne rozwiązanie polega na umieszczeniu białych spacji w pliku .env. I ten, w którym większość ludzi zawodzi i zaczyna wyrywać sobie włosy.

Bardzo łatwo to przeoczyć, ale jako przykład możesz mieć w swoim pliku .env coś takiego:

NAZWA STRONY=Moja aplikacja Laravel

Samo to nie zadziała, ponieważ białe spacje uszkodzą plik .env.

To, co musisz zrobić, to otoczyć swoje wartości cudzysłowami w następujący sposób:

NAZWA STRONY=Moja aplikacja Laravel

Tym razem wszystko powinno działać dobrze.

Tylko pamiętaj, aby wyczyścić pamięć podręczną konfiguracji za każdym razem, gdy wprowadzasz zmianę. Możemy to zrobić tak samo jak poprzednio:

php rzemieślnicza konfiguracja:Pamięć podręczna
php rzemieślnicza konfiguracja:jasne