После обновления до 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 на том же сервере, которые работают нормально.
Ого. Печаль во благо. Это потому, что у меня было значение env с пространством в нем, а не окружено кавычками
Это
SITE_NAME=My website
Изменен для этого
SITE_NAME="My website"
Исправлено. Я думаю, что это связано с тем, что теперь Laravel 5.2 обновляет vlucas/phpdotenv с 1.1.1 до 2.1.0
.env
под 5.2, где, как и в 5.1, этого не произошло.
phpdotenv
, но Laravel по-прежнему знает, что есть файл .env
который нужно включить, и что он не был успешным, но не хочет никому рассказывать.
Из официальных заметок по версии Laravel 5.2:
Если вы используете команду
config:cache
во время развертывания, вы должен убедиться, что вы вызываете только функциюenv
изнутри ваши файлы конфигурации, а не нигде в вашем приложение.Если вы вызываете
env
из своего приложения, это сильно рекомендуется добавить правильные значения конфигурации в вашу конфигурацию файлы и вызовитеenv
из этого местоположения вместо этого, что позволяет конвертировать вашenv
вызывает вызовыconfig
.
php artisan config:cache
решил это за меня - больше ничего не помогло. Даже не php artisan config:clear
- спасибо!
php artisan config:clear
единственное, что у меня сработало php artisan config:clear
Если какая-либо из ваших переменных .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
запустите это:
php artisan config:clear
php artisan cache:clear
затем php artisan config:cache
У меня была такая же проблема в местной среде, я решил
Когда вы запустили команду php artisan config:cache
она уничтожит все переменные env
а env()
выдаст нулевые значения, попробуйте выполнить команду follwing и загляните туда, где env()
снова начнет перехватывать все переменные env
php artisan config:clear
Простота - это мощность:
php artisan config:cache
Вы получите:
Очистка кэша конфигурации
Конфигурация кэширована успешно!
Я пропустил это в инструкциях по обновлению:
Добавьте параметр конфигурации env в конфигурационный файл
app.php
, который выглядит следующим образом:'env' => env('APP_ENV', 'production')
Добавление этой строки привело к правильному чтению локального файла .env
.
удалить кеш, используя:
php artisan config:clear
php artisan config:cache
Я столкнулся с той же проблемой на моем местном, и я попробовал все ответы здесь, но безрезультатно. Только это сработало для меня, php artisan config:clear
и restart server
. Работает как шарм!
php artisan config:cache
, php artisan config:clear
затем php artisan cache:clear
Я решил эту проблему, генерируя новый ключ, используя команду: 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
...
если вы вызывали config: cache во время локальной разработки, вы можете отменить это, удалив файл bootstrap/cache/config.php. и это работа для меня.
Я сделал ошибку, выполнив команду dd/die/dump в файле index.php
. Это заставляет систему не восстанавливать конфиги.
Просто сделайте дамп в файлах представления. Изменения в файле .env
обновляются мгновенно.
Я испытал это. Причина была в том, что apache (пользовательские www-данные) не мог прочитать.env из-за прав доступа к файлу. Поэтому я изменил права доступа к файлу, чтобы сервер (apache) имел права на чтение файла. Только это и бум, теперь все работало!
Если вы запустите эту команду php artisan config:cache
на консоли, то она сохранит все содержимое файла.env в кеше, после этой команды, если вы добавите любое содержимое в файл.env, она не будет доступна, пока вы не запустите php artisan config:clear
команда