Laravel 5.2 не читает env файл

После обновления до Laravel 5.2, ни один из моих .env Значения файла читаются. Я следовал за инструкции по обновлению; ни один из моих файлов конфигурации не был изменен кроме auth.php. Они все работали нормально в предыдущей версии, 5.1.19

.env содержит значения, такие как

DB_DATABASE=mydb
DB_USERNAME=myuser

config/database.php содержит

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

Я получаю эту ошибку:

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)

Ясно, не тянет в моем конфиге env. Это влияет на каждый из моих конфигурационных файлов, включая сторонние, такие как Bugsnag.

Я тоже пробовал

php artisan config:clear
php artisan cache:clear

Обновить

Попытка php artisan tinker

>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge">>> dd($_ENV)
[]

Я попытался установить свежую копию Laravel 5.2. Я в основном только скопировал в мою папку «приложения»; дополнительные пакеты композитора не включены. Все еще с той же проблемой. У меня есть другие проекты Laravel 5.2 на том же сервере, которые работают нормально.

48

Решение

Из официальных замечаний по обновлению Laravel 5.2:

Если вы используете config:cache команда во время развертывания, вы
должен убедитесь, что вы звоните только env функция изнутри
ваши файлы конфигурации, а не из других мест в вашем
приложение.

Если вы звоните env из вашего приложения, это сильно
Рекомендуется добавить правильные значения конфигурации в вашу конфигурацию
файлы и вызов env вместо этого из этого места, что позволяет конвертировать
ваш env звонки в config звонки.

Ссылка: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0

54

Другие решения

Вот это да. Печаль во благо. Это потому, что у меня было значение env с пробелом в нем, а не в кавычках

это

SITE_NAME=My website

Поменял на это

SITE_NAME="My website"

Починил это. Я думаю, что это связано с обновлением Laravel 5.2 vlucas / phpdotenv с 1.1.1 до 2.1.0

33

Если любой из ваших .env переменная содержит пробел, убедитесь, что вы заключили их в двойные кавычки. Например:

SITE_NAME="My website"

Не забудьте очистить кеш перед тестированием:

php artisan config:cache;
php artisan config:clear;
30

У меня была похожая проблема в моем config/services.php и я решил использовать config clear а также optimize команды:

php artisan config:clear
php artisan optimize
18

запустите это:

php artisan config:clear
php artisan cache:clear

затем
php artisan config:cache

10

Простота — это сила:

php artisan config:cache

Вы получите:

Кэш конфигурации очищен!

Конфигурация успешно кэширована!

6

Когда вы уволили команду php artisan config:cache тогда он уничтожит все env переменные и env() даст нулевые значения, попробуйте выполнить следующую команду env() снова начать ловить все env переменная

php artisan config:clear
6

У меня была такая же проблема в местной среде, я решил

  1. Конфигурация PHP Artisan: очистить
  2. Конфигурация php artisan: кеш
  3. и затем отмена команды php artisan serve и перезапустите снова.
6
По вопросам рекламы [email protected]