it-roy-ru.com

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

После обновления до 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

Update

Попытка php artisan tinker

>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge"
>>> dd($_ENV)
[]

Я попытался установить свежую копию Laravel 5.2. Я в основном только скопировал в мою папку app; дополнительные пакеты composer не включены. Все еще с той же проблемой. У меня есть другие проекты Laravel 5.2 на том же сервере, которые работают нормально.

62
andrewtweber

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

Это 

SITE_NAME=My website

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

SITE_NAME="My website"

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

33
andrewtweber

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

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

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

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

54
Gaurav Gupta

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

SITE_NAME="My website"

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

php artisan config:cache;
php artisan config:clear;
31
benjolly1989

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

php artisan config:clear
php artisan optimize
19
Deric Lima

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

php artisan config:clear
php artisan cache:clear

затем
php artisan config:cache

11
Ganesh K

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

php artisan config:clear
6
Shahrukh Anwar

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

php artisan config:cache

Вы получите:

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

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

6
Adam Kozlowski

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

  1. конфигурация PHP Artisan: очистить
  2. конфигурация php artisan: кеш
  3. и затем отмена команды php artisan serve и перезапустите снова.
6
jay_mziray

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

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

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

5
dKen

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

    php artisan config:clear
    php artisan config:cache
4
Diego Santa Cruz Mendezú

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

3
Dexter Bengil

Также в дополнение к тому, что предложил @andrewtweber, убедитесь, что у вас нет пробелов между KEY = и значением , если оно не заключено в кавычки

.env file например:

...
SITE_NAME= My website
MAIL_PORT= 587
MAIL_FROM_NAME= websitename
...

чтобы:

...
SITE_NAME="My website"
MAIL_PORT=587
MAIL_FROM_NAME=websitename
...
2
Waqleh

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

2
Angel Prieto

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

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

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

2
TrOnNe

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

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

APP_URL="http://localhost:8000"

а потом

php artisan config:clear
1
Stavros

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

1
Payal Pandav

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

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

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

0
Daya Satheesh

В моем случае laravel 5.7 env('APP_URL') не работает, но config('app.url') работает. Если я добавляю новую переменную в env и в config - она ​​не работает - но после php artisan config:cache она запускается.

0
Kamil Kiełczewski

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

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

0
Bing Han

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

0
gthuo

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

0
Chandrakant Ganji

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

  • конфигурация php artisan: кеш
  • конфигурация PHP Artisan: очистить
  • pHP кеш ремесленника: очистить
0
beatusfk