ларавел

Laravel не читает .env файл после изменения

Laravel не читает .env файл после изменения

Проблема

Это довольно распространенная проблема, которая появляется среди новых разработчиков Laravel.

Многие люди пытались обновить свои .env, чтобы увидеть, что когда они обновляют свое приложение, .значения конфигурации env не отображаются.

И что более интересно, это довольно часто появляется после обновления версии Laravel.

Так, например, у вас будет это в своем .env файл:

DB_DATABASE = laraveldb
DB_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: очистить
Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...
Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...