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

php laravel environment-variables laravel-5.2

64236 просмотра

21 ответа

12217 Репутация автора

После обновления до 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 на том же сервере, которые работают нормально.

Автор: andrewtweber Источник Размещён: 22.12.2015 04:51

Ответы (21)


34 плюса

12217 Репутация автора

Решение

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

это

SITE_NAME=My website

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

SITE_NAME="My website"

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

Автор: andrewtweber Размещён: 22.12.2015 07:38

38 плюса

431 Репутация автора

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

SITE_NAME="My website"

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

php artisan config:cache
php artisan config:clear
Автор: benjolly1989 Размещён: 13.03.2016 05:42

60 плюса

4616 Репутация автора

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

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

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

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

Автор: Gaurav Gupta Размещён: 22.04.2016 08:46

6 плюса

2450 Репутация автора

Я пропустил это в инструкции по обновлению:

Добавьте параметр конфигурации env в свой app.phpфайл конфигурации, который выглядит следующим образом: 'env' => env('APP_ENV', 'production')

Добавление этой строки привело к .envправильному считыванию локального файла.

Автор: dKen Размещён: 22.04.2016 02:32

20 плюса

569 Репутация автора

У меня была аналогичная проблема по моему , config/services.phpи я решил с помощью config clearи optimizeкоманды:

php artisan config:clear
php artisan optimize
Автор: Deric Lima Размещён: 01.09.2016 02:02

3 плюса

4789 Репутация автора

Также в дополнение к тому, что @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
...
Автор: Waqleh Размещён: 16.06.2017 10:58

7 плюса

1917 Репутация автора

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

php artisan config:cache

Вы получите:

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

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

Автор: Adam Kozlowski Размещён: 03.09.2017 01:55

2 плюса

33 Репутация автора

Я решил эту проблему, генерируя новый ключ, используя команду: php artisan key:generate

Автор: Angel Prieto Размещён: 05.09.2017 08:41

12 плюса

461 Репутация автора

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

php artisan config:clear
php artisan cache:clear

затем
php artisan config:cache

Автор: Ganesh K Размещён: 28.09.2017 01:38

3 плюса

2453 Репутация автора

Я столкнулся с той же проблемой на моем местном, и я попробовал все ответы здесь, но безрезультатно. Только это работало для меня, php artisan config:clearи restart server. Работает как шарм!

Автор: Dexter Bengil Размещён: 02.01.2018 09:58

5 плюса

1132 Репутация автора

удалить кеш используя:

    php artisan config:clear
    php artisan config:cache
Автор: Diego Santa Cruz Mendezú Размещён: 06.03.2018 03:07

0 плюса

116 Репутация автора

Если вы запустите эту php artisan config:cacheкоманду на консоли, она сохранит все содержимое файла .env в кеше, после этой команды, если вы добавите любое содержимое в файл .env, она не будет доступна, пока вы не выполните php artisan config:clearкоманду

Автор: Chandrakant Ganji Размещён: 23.04.2018 06:29

8 плюса

1 Репутация автора

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

php artisan config:clear
Автор: Shahrukh Anwar Размещён: 02.05.2018 08:16

7 плюса

111 Репутация автора

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

  1. Конфигурация PHP Artisan: очистить
  2. Конфигурация php artisan: кеш
  3. и затем отмена команды php artisan serve и перезапустите снова.
Автор: jay_mziray Размещён: 22.06.2018 07:47

1 плюс

91 Репутация автора

если вы вызывали config: cache во время локальной разработки, вы можете отменить это, удалив файл bootstrap / cache / config.php. и это работа для меня.

Автор: Payal Pandav Размещён: 08.08.2018 11:51

0 плюса

651 Репутация автора

Я испытал это. Причина была в том, что apache (пользовательские www-данные) не мог прочитать .env из-за прав доступа к файлу. Поэтому я изменил права доступа к файлу, чтобы сервер (apache) имел права на чтение файла. Только это и бум, теперь все работало!

Автор: gthuo Размещён: 27.10.2018 08:26

0 плюса

446 Репутация автора

Я сделал ошибку, выполнив команду dd / die / dump в index.phpфайле. Это заставляет систему не восстанавливать конфиги.

Просто сделайте дамп в файлах представления. Изменения в .envфайле обновляются мгновенно.

Автор: Bing Han Размещён: 24.01.2019 08:46

3 плюса

53 Репутация автора

То же самое происходит, когда: порт находится в вашем локальном .env

опять двойные кавычки добиваются цели

APP_URL="http://localhost:8000"

а потом

php artisan config:clear
Автор: Stavros Размещён: 28.02.2019 04:31

2 плюса

468 Репутация автора

Для меня это сработало так:

php artisan config:cache
php artisan config:clear
php artisan cache:clear

И все остальные я перепробовал без удачи.

Автор: TrOnNe Размещён: 05.03.2019 07:41

0 плюса

1 Репутация автора

если вы вызывали config: cache во время локальной разработки, вы можете отменить это, удалив файл bootstrap / cache / config.php. и это работа для меня.

@Payal Pandav дал комментарий выше.

Я хочу рассказать простой обходной путь. Просто отредактируйте файл config.php в папке bootstrap / cache /. И изменить учетные данные. Это сработало для меня. Пожалуйста, не удаляйте этот файл, так как он может содержать другие важные данные в производственной среде.

Автор: Daya Satheesh Размещён: 14.03.2019 06:55

0 плюса

11 Репутация автора

У меня сработало следующее

  • Конфигурация php artisan: кеш
  • Конфигурация PHP Artisan: очистить
  • PHP кеш ремесленника: очистить
Автор: beatusfk Размещён: 24.04.2019 10:30
Вопросы из категории :
32x32