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=laraveldbDB_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ęcznaphp 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 LaravelSamo 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ęcznaphp artisan config:wyczyść