Проблема
Это довольно распространенная проблема, которая появляется среди новых разработчиков Laravel.
Многие люди пытались обновить свои .env, чтобы увидеть, что когда они обновляют свое приложение, .значения конфигурации env не отображаются.
И что более интересно, это довольно часто появляется после обновления версии Laravel.
Так, например, у вас будет это в своем .env файл:
DB_DATABASE = laraveldbDB_USERNAME = laraveluser
Затем, естественно, внутри config / database.php у вас будет это:
'mysql' => ['база данных' => env ('DB_DATABASE', 'lar'),
'имя пользователя' => env ('ИМЯ_ПОЛЬЗОВАТЕЛЯ БД', 'лар'),
]
Forge здесь означает значения по умолчанию. Это означает, что эти значения будут использоваться в случае, если вы не предоставили свой DB_DATABASE а также DB_USERNAME ценности внутри вашего .env файл. Эта информация будет немного полезна.
Теперь, как вы узнаете, что у вас есть эта конкретная проблема, если вы столкнетесь со следующим исключением:
PDOException: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя 'lar' @ 'localhost'(используя пароль: НЕТ)
Это ясно показывает, что ваше приложение Laravel получает значение по умолчанию из вашего config / база данных.php файл, а не из вашего .env .
Прежде чем делать что-либо еще, вы также можете попробовать проверить эту проблему с помощью php artisan tinker:
>>> env ('DB_DATABASE')=> ноль
>>> getenv ('DB_DATABASE')
=> ложь
>>> config ('база данных.связи.MySQL.база данных')
=> «Лар»
>>> dd ($ _ ENV)
[]
Вы часто будете видеть, что выполнение следующих действий тоже не имеет значения. Однако разработчики пытаются проверить свою конфигурацию, запустив совершенно новую установку Laravel и просто скопировав старую папку приложения. Они не запускают установку пакетов композитора или что-то еще.
Если вы не используете Linux (я расскажу почему, чуть позже), вы не увидите никаких изменений.
Решение
Как всегда, есть много вещей, которые вы можете сделать, чтобы попытаться решить эту проблему, но некоторые из них с большей вероятностью увенчаются успехом.
Очистите кеш конфигурации
Во-первых, если вы этого не сделали, вы должны очистить кеш конфигурации, прежде чем вы сможете делать что-либо еще.
Поскольку наш код в настоящее время использует так много библиотек, мы вынуждены кэшировать вещи, чтобы иметь к ним быстрый доступ во время выполнения.
У меня лично были проблемы с этим в Windows и Mac, однако я заметил, что по какой-то причине в Linux (Ubuntu) эти файлы конфигурации либо очищаются с помощью какой-то ловушки, либо они вообще не кэшируются, потому что я смог перезагрузите приложение новым .значения env без выполнения следующих действий.
Убедитесь, что вы очистили кеш конфигурации, выполнив следующие команды:
Конфигурация php artisan: кешКонфигурация php artisan: очистить
Проверьте наличие пустых мест внутри вашего .env файл
Следующее решение - наличие пробелов внутри вашего .env файл. И этот, если большинство людей терпят неудачу и начинают рвать волосы.
Это очень легко пропустить, но в качестве примера вы могли бы иметь .env файл выглядит примерно так:
SITE_NAME = Мое приложение LaravelСамо по себе это не сработает, поскольку пробелы повредят .env файл.
Что вам нужно сделать, так это заключить ваши значения в кавычки следующим образом:
SITE_NAME = "Мое приложение Laravel"На этот раз все должно работать нормально.
Просто не забывайте очищать кеш конфигурации каждый раз, когда вносите изменения. Мы можем сделать это так же, как и раньше:
Конфигурация php artisan: кешКонфигурация php artisan: очистить