Po aktualizacji do Laravel 5.2 żadne wartości moich .env
plików nie są odczytywane. Postępowałem zgodnie z instrukcjami aktualizacji ; żaden z moich plików konfiguracyjnych nie został zmieniony poza auth.php. Wszystkie działały dobrze w poprzedniej wersji 5.1.19
.env
zawiera wartości, takie jak
DB_DATABASE=mydb
DB_USERNAME=myuser
config/database.php
zawiera
'mysql' => [
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
]
Otrzymuję ten błąd:
PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)
Najwyraźniej nie ściągam mojej konfiguracji env. Ma to wpływ na każdy z moich plików konfiguracyjnych, w tym stron trzecich, takich jak bugsnag.
Ja też próbowałem
php artisan config:clear
php artisan cache:clear
Aktualizacja
Próbować php artisan tinker
>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge"
>>> dd($_ENV)
[]
Próbowałem zainstalować nową kopię Laravel 5.2. Zasadniczo kopiowałem tylko w moim app
folderze; nie zawiera żadnych dodatkowych pakietów kompozytorów. Nadal mam ten sam problem. Mam inne projekty Laravel 5.2 na tym samym serwerze, które działają dobrze.
źródło
.env
Odpowiedzi:
Z oficjalnych uwag o aktualizacji Laravel 5.2:
Źródła: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0
źródło
php artisan config:cache
rozwiązałem to za mnie - nic innego nie pomogło. Nawetphp artisan config:clear
- dzięki!php artisan config:clear
to jedyna rzecz, która działała dla mniephp artisan config:clear
zadziałał dla mnie. Nie robiłem wcześniej config: cache, więc wydawało się trochę dziwne, że musiałem wyczyścić pamięć podręczną..env
zamiast.env.example
plikuJeśli którakolwiek z twoich
.env
zmiennych zawiera spacje, upewnij się, że umieściłeś je w cudzysłowach. Na przykład:SITE_NAME="My website"
Nie zapomnij wyczyścić pamięci podręcznej przed testowaniem:
źródło
.env
pliku uruchomphp artisan config:cache & php artisan config:clear
polecenie. To będzie działać.Łał. O jeny. To dlatego, że miałem wartość env ze spacją, a nie w cudzysłowie
To
Zmieniono na to
Naprawione. Myślę, że miało to związek z Laravel 5.2, który teraz aktualizuje vlucas / phpdotenv z 1.1.1 do 2.1.0
źródło
.env
5.2, podczas gdy w wersji 5.1 nie.phpdotenv
, ale Laravel nadal wie, że istnieje.env
plik, który należy dołączyć, i że nie powiodło się, ale nie zawraca sobie głowy informowaniem o tym nikogo.Dla mnie zadziałało to w następującej kolejności:
A resztę próbowałem bez powodzenia.
źródło
Miałem podobny problem w moim
config/services.php
i rozwiązałem za pomocą poleceńconfig clear
ioptimize
:źródło
Dla mnie zadziałało następujące
źródło
Uruchom to:
następnie
php artisan config:cache
źródło
Kiedy uruchomisz polecenie,
php artisan config:cache
usunie ono wszystkieenv
zmienne ienv()
poda wartości null, spróbuj uruchomić następujące polecenie i uruchomenv()
ponownie, aby ponownie zacząć łapać wszystkieenv
zmienneźródło
Miałem ten sam problem w środowisku lokalnym, rozwiązałem przez
źródło
Możesz rozwiązać problem, postępując zgodnie z poniższymi zaleceniami
Zalecenie 1:
Musisz użyć pliku .env poprzez pliki konfiguracyjne, co oznacza, że jesteś proszony o odczytanie pliku .env z plików konfiguracyjnych (takich jak /config/app.php lub /config/database.php), a następnie możesz użyć konfiguracji pliki z dowolnego miejsca Twojego projektu.
Zalecenie 2: ustaw wartość środkową w podwójnym cudzysłowie
Zalecenie 3: Po zmianie dowolnej konfiguracji lub wartości środowiska należy zachować następującą sekwencję poleceń.
Zalecenie 4: Jeśli syntax1 nie działa, możesz wypróbować inną składnię2
Zalecenie 5: Gdy liczba użytkowników jest duża / większa , należy zwiększyć rozmiar pamięci w konfiguracji serwera .
Zalecenie 6: Ustaw domyślną prawdopodobną wartość podczas odczytywania zmiennej .env.
źródło
Brakowało mi tego w instrukcjach aktualizacji:
Dodanie tej linii sprawiło, że
.env
plik lokalny został poprawnie odczytany.źródło
Prostota to potęga:
Otrzymacie:
Pamięć podręczna konfiguracji została wyczyszczona!
Konfiguracja została zapisana w pamięci podręcznej!
źródło
To samo dzieje się, gdy: port znajduje się w lokalnym pliku .env
znowu podwójne cudzysłowy załatwiają sprawę
i wtedy
źródło
usuń pamięć podręczną za pomocą:
źródło
Oprócz tego, co sugerował @andrewtweber, upewnij się, że nie ma spacji między KEY = a wartością, chyba że znajduje się między cudzysłowami
plik .env np:
do:
źródło
Napotkałem ten sam problem na moim komputerze lokalnym i wypróbowałem wszystkie odpowiedzi tutaj, ale bezskutecznie. Tylko to działało dla mnie
php artisan config:clear
irestart server
. Działa jak marzenie!źródło
php artisan config:cache
,php artisan config:clear
a następniephp artisan cache:clear
Rozwiązałem ten problem generując nowy klucz za pomocą polecenia:
php artisan key:generate
źródło
jeśli wywołałeś config: cache podczas lokalnego rozwoju, możesz to cofnąć, usuwając plik bootstrap / cache / config.php. i to jest praca dla mnie.
źródło
jeśli wywołałeś config: cache podczas lokalnego rozwoju, możesz to cofnąć, usuwając plik bootstrap / cache / config.php. i to jest praca dla mnie.
@Payal Pandav dał komentarz powyżej.
Chcę przedstawić proste obejście. Po prostu edytuj plik config.php w folderze bootstrap / cache /. I zmień poświadczenia. To zadziałało dla mnie. Nie usuwaj tego pliku, ponieważ może on zawierać inne ważne dane w środowisku produkcyjnym.
źródło
W moim przypadku laravel 5.7
env('APP_URL')
nie działa, aleconfig('app.url')
działa. Jeśli dodam nową zmienną doenv
i do configu - to nie działa - ale pophp artisan config:cache
uruchomieniu działa.źródło
php artisan optimize:clear
php artisan config:clear
, wyczyści pamięć podręczną konfiguracji i nie będzie generować ponownie, a kiedy przejdziesz do produkcji, możesz uruchomić,php artisan config:cache
aby buforować swoje konfiguracjeJeśli uruchomisz to
php artisan config:cache
polecenie na konsoli, zapisze całą zawartość pliku .env w pamięci podręcznej, po tym poleceniu, jeśli dołączysz jakąkolwiek zawartość do pliku .env, nie będzie ona dostępna do czasu uruchomieniaphp artisan config:clear
poleceniaźródło
Z tym samym problemem borykam się przez długi czas podczas rozwoju larw. czasami env przestaje działać i nie zwraca żadnej wartości. ten powód może być inny, w zależności od Twojej sytuacji. ale w moim przypadku kilka dni temu po prostu biegam
więc uważaj, używając tego polecenia. ponieważ wyczyści wszystkie dane konfiguracyjne z pamięci podręcznej. więc po tym nie zwróci żadnej wartości. W tej sytuacji musisz użyć tego najpierw, jeśli uruchomiłeś polecenie PHP artisan config :: clear .
źródło
Ja tego doświadczyłem. Powodem było to, że apache (dane www użytkownika) nie mógł odczytać .env z powodu uprawnień do pliku. Więc zmieniłem uprawnienia do pliku, aby upewnić się, że serwer (apache) ma uprawnienia do odczytu pliku. Tylko to i bum, teraz wszystko działało!
Aktualizacja:
jak to zrobić różni się w zależności od tego, kto jest właścicielem pliku .env, ale zakładając, że należy on do
www-data
grupy Apache , możesz to zrobić:Zmodyfikuj go w zależności od struktury uprawnień.
źródło
So i changed the file permissions to ensure that the server (apache) had read permissions to the file.
to jest właściwie złe podejście. Powinieneś mieć naprawioną konfigurację apaxhe, aby służyła tej konkretnej witrynie jako właścicielowi, który jest właścicielem tych plikówPopełniłem błąd, wykonując dd / die / dump w
index.php
pliku. Powoduje to, że system nie generuje ponownie konfiguracji.Po prostu zrób zrzut w widoku, który zrobi. Zmiany w
.env
pliku aktualizują się natychmiast.źródło
Miałem z tym pewne problemy. Wyglądało na to, że gdzieś w aplikacji jest problem z uprawnieniami do pliku - nie dotyczy to pliku .env.
Musiałem - zatrzymać mój docker - użyć chown, aby ustawić prawa do własnego użytkownika dla całego projektu - ponownie uruchomić docker
Tym razem się udało.
źródło
Wypróbowałem prawie wszystkie powyższe. Skończyło się robić
chmod 666 .env
który zadziałał. Wydaje się, że ten problem nadal pojawia się w aplikacji, którą odziedziczyłem, jednak ostatnio nastąpiło to po dodaniu testu .env.testing. Uruchamianie Laravel 5.8
źródło