Laravel 5 - env () всегда возвращает ноль

Я пытаюсь выяснить, почему мой помощник env() всегда возвращает null. Это вызывает проблемы, особенно в файле app.php, где по умолчанию используются помощники env(). Возможно, какая-то загадочная настройка сервера?

Мой файл env:

APP_ENV=production
APP_KEY=base64:mymagickey=
APP_DEBUG=false
APP_LOG_LEVEL=info
APP_URL=http://www.example.com

etc...

EDIT - я пробовал:

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

и, конечно, я использую env helper следующим образом: env('APP_ENV')

Но до сих пор нет успеха. Wierd часть состоит в том, что переменная $_ENV php содержит каждую переменную из файла .env.

Ответ 1

Функция env(...) не будет работать после того, как вы кешировали конфигурацию. (начиная с уровня 5.2 до текущего 5.7)

Документация Laravel гласит

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

Таким образом, правильный ответ будет

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

И я процитировал это из той же документации

Но для быстрого исправления это подойдет:

php artisan config:clear

И теперь должно быть понятно, почему, когда вы попробовали config:cache, это не помогло, хотя и очищает конфигурацию перед кэшированием.

Ответ 2

Надеюсь, эта команда спасет вас

Конфигурация php Artisan: очистить

Ответ 3

Пять наиболее важных команд, если ваш Laravel не работает должным образом после некоторых изменений в .env или папке базы данных или из-за любых других изменений. Вот полное объяснение: https://www.youtube.com/watch?v=Q1ynDMC8UGg

php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
composer dump-autoload

Ответ 4

Это ".env" известная ошибка, которая может быть решена с помощью:

php artisan config:cache

Ответ 5

Используйте \Config::get('app.env'); вместо env(APP_ENV); потому что в конечном итоге вы получите ту же ошибку, и это не хорошо для живого веб-сайта.

Если вы хотите добавить пользовательские переменные из ENV, зайдите в конфигурационное приложение и найдите это:

/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),

добавьте новую строку под " 'env' => env('APP_ENV', 'production'), ", например, это может быть следующее:

/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),
'key' => env('APP_KEY'),

Вы можете вызвать "ключевую" переменную следующим образом:

\Config::get('app.key');

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

Ответ 6

Похоже, на сервере была установлена старая PHP-версия, которая не подходит для .env пакета Laravel .env. Когда я развернул веб-сайт на другом сервере с установленным PHP 7, env() вернул значения, как ожидалось.

Ответ 7

Следующая команда сработала для меня. Я случайно очистил все файлы кеша, поэтому env() возвращал ноль.

php artisan optimize:clear