После обновления до Laravel 5.2 ни один из моих .env
файла .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 на том же сервере, которые работают нормально.
Из официального отчета Larvel 5.2:
Если вы используете команду
config:cache
во время развертывания, вы должны убедиться, что вы вызываете только функциюenv
из ваших файлов конфигурации, а не из любого места в вашем приложении.Если вы вызываете
env
из своего приложения, настоятельно рекомендуется добавлять правильные значения конфигурации в свои файлы конфигурации и вместо этого вызыватьenv
из этого места, что позволяет конвертировать вызовыenv
вызовыconfig
.
Вау. Печаль во благо. Это потому, что у меня было значение env с пространством в нем, а не с кавычками
Эта
SITE_NAME=My website
Изменено к этому
SITE_NAME="My website"
Починил это. Я думаю, что это связано с Laravel 5.2, теперь обновляющим vlucas / phpdotenv с 1.1.1 до 2.1.0
Если какая-либо из ваших переменных .env
содержит пробел, убедитесь, что вы завернули их в двойные кавычки. Например:
SITE_NAME="My website"
Не забудьте очистить кеш до тестирования:
php artisan config:cache; php artisan config:clear;
У меня была аналогичная проблема в моем config/services.php
и я решил использовать команды config clear
и optimize
:
php artisan config:clear php artisan optimize
Я пропустил это в инструкциях по обновлению:
Добавьте параметр конфигурации env в
app.php
конфигурацииapp.php
который выглядит следующим образом:'env' => env('APP_ENV', 'production')
Добавление этой строки .env
к правильному чтению локального файла .env
.
Простота – это сила:
php artisan config:cache
Вы получите:
Очистка кэша конфигурации!
Конфигурация кэширована успешно!
Я решил эту проблему generatin нового ключа php artisan key:generate
Кроме того, в дополнение к тому, что предлагалось @andrewtweber, убедитесь, что у вас нет пробелов между KEY = и значением, если оно не находится между кавычками
.env, например:
... SITE_NAME= My website MAIL_PORT= 587 MAIL_FROM_NAME= websitename ...
чтобы:
... SITE_NAME="My website" MAIL_PORT=587 MAIL_FROM_NAME=websitename ...
выполните следующее:
php artisan config:clear php artisan cache:clear