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