laravel

Laravel nie czyta .plik env po zmianie

Laravel nie czyta .plik env po zmianie

Problem

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

Wiele osób próbowało zaktualizować swoje .plik env tylko po to, aby zobaczyć, że kiedy odświeżają swoją aplikację, .wartości konfiguracji env nie są wyświetlane.

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

Na przykład miałbyś to w swoim .plik env:

DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Potem oczywiście w konfiguracji/bazie danych.plik php miałbyś to:

'mysql' => [
'database' => env('DB_DATABASE', 'lar'),
'username' => env('DB_USERNAME', 'lar'),
]

kuź 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 i DB_USERNAME wartości wewnątrz twojego .plik env. Te informacje przydadzą się za chwilę.

Skąd wiesz, że masz ten konkretny problem, jeśli natrafisz na następujący wyjątek:

PDOException: SQLSTATE[HY000] [1045] Odmowa dostępu dla użytkownika 'lar'@'localhost'
(za pomocą hasła: NIE)

To wyraźnie pokazuje, że twoja aplikacja Laravel pobiera domyślną wartość z twojego konfiguracja/baza danych.php plik, a nie z twojego .zazdrościć .

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

>>> env('BAZA_DANYCH')
=> null
>>> getenv('DB_DATABASE')
=> fałsz
>>> config('baza danych.znajomości.mysql.Baza danych')
=> „lar”
>>> dd($_ENV)
[]

Często zobaczysz, że wykonanie poniższych czynności też nie zrobi różnicy. 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 korzystasz z Linuksa (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 przeładuj aplikację z nowym .wartości 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 artisan config: pamięć podręczna
php artisan config:wyczyść

Sprawdź puste miejsca w swoim .plik env

Następnym rozwiązaniem jest posiadanie białych przestrzeni wewnątrz twojego .plik env. I ten, w którym większość ludzi zawodzi i zaczyna rwać włosy.

Bardzo łatwo to przegapić, ale jako przykład, co możesz mieć w swoim .plik env to mniej więcej tak:

SITE_NAME=Moja aplikacja Laravel

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

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

SITE_NAME=”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 dokonasz zmiany. Możemy to zrobić tak samo jak poprzednio:

php artisan config: pamięć podręczna
php artisan config:wyczyść
Jak używać Xdotool do stymulacji kliknięć myszą i naciśnięć klawiszy w systemie Linux?
Xdotool to darmowe i otwarte narzędzie wiersza poleceń do symulacji kliknięć myszą i naciśnięć klawiszy. Ten artykuł zawiera krótki przewodnik dotyczą...
5 najlepszych ergonomicznych myszy komputerowych dla systemu Linux
Czy długotrwałe korzystanie z komputera powoduje ból nadgarstka lub palców?? Cierpisz na sztywne stawy i ciągle musisz uścisnąć dłonie? Czy czujesz pa...
Jak zmienić ustawienia myszy i touchpada za pomocą Xinput w systemie Linux?
Większość dystrybucji Linuksa jest domyślnie dostarczana z biblioteką „libinput” do obsługi zdarzeń wejściowych w systemie. Może przetwarzać zdarzenia...