Laravel 5.3 - env()始终返回null

Fus*_*ion 39 php environment-variables laravel phpdotenv

我试图找出为什么我的env()助手总是回来null.这会导致问题,特别是在app.php文件中,env()默认情况下广泛使用的助手.也许任何神秘的服务器设置?

我的环境文件:

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

etc...
Run Code Online (Sandbox Code Playgroud)

编辑 - 我试过以下:

php artisan cache:clear
php artisan view:clear
php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

当然,我正在使用这样的env帮手:env('APP_ENV')

但仍然没有成功.奇怪的是,$_ENVphp变量包含.env文件中的每个变量.

Yev*_*yev 75

env(...)缓存配置后,函数将无法正常工作.(从laravel 5.2开始直到5.7)

Laravel文档

如果config:cache在部署期间使用该命令,则必须确保仅从env配置文件中调用该函数,而不是从应用程序中的任何其他位置调用该函数.

所以正确的答案是

如果从应用程序中调用env,强烈建议您在配置文件中添加正确的配置值,并从该位置调用env,允许您将env调用转换为config调用.

我从相同的文档中引用它

但是为了快速解决这个问题:

php artisan config:clear

现在应该清楚为什么,当你尝试config:cache它时没有帮助,即使它在缓存之前清除配置.

  • 所以我认为我们不应该在我们的应用程序中直接使用`env('APP_ENV')`之类的东西。相反,我们应该在`config/app.php`中写一行:`'env' => env('APP_ENV'),`。然后,我们在代码中使用它:`config('app.env')`。 (5认同)
  • 谢谢,“php artisan config:clear”是唯一可以让我的 AWS SES 凭证读取的方法。 (2认同)

sh6*_*210 32

希望这个命令会救你

php artisan配置:清除


San*_*mar 23

以下命令对我有用。我不小心清除了所有缓存文件,所以env('something')返回null。

php artisan optimize:clear
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!!今天我突然发生了这种情况 - Laravel 8。这解决了它。 (4认同)

Igo*_*nov 17

只需在 Laravel 项目根目录运行此命令

rm bootstrap/cache/config.php
Run Code Online (Sandbox Code Playgroud)

  • 多么神奇<3 (3认同)

Lea*_*ner 11

如果您的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
Run Code Online (Sandbox Code Playgroud)

  • 只运行 `php artisan config:cache` 不起作用。在我运行 `php artisan config:clear` 后,它就可以工作了。现在我可以再次使用 env($key)。谢谢@Learner (3认同)

小智 9

这是一个".env"已知错误,可以通过以下方式解决:

php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

  • 有些用户可能需要做php artisan配置:清除 (12认同)
  • Laravel 5.5我不得不运行'php artisan config:clear'.谢谢 (6认同)
  • php artisan config:cache是​​env()值为null的原因.如果你想缓存你的配置和环境变量,那么你不应该在配置文件以外的任何地方使用env(),因为一旦缓存env()将始终返回null.虽然现在我也看到config()和Config :: get()helper在缓存后返回null,这也很奇怪. (3认同)

DIG*_*NAL 8

使用\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'),
Run Code Online (Sandbox Code Playgroud)

在" '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'),
Run Code Online (Sandbox Code Playgroud)

您可以像这样调用"key"变量:

\Config::get('app.key');
Run Code Online (Sandbox Code Playgroud)

每当您向应用程序环境添加"key"等新变量时,您都需要使用config:cache重置缓存.


Lok*_*sen 5

尝试以下命令后

php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
Run Code Online (Sandbox Code Playgroud)

如果你仍然得到 null ,env('APP_ENV')那么试试这个app()->environment()。希望这不会返回 null。这对我有用