似乎在Middleware Kernel constructor()
中,即使我可以访问env('')
助手,我在 .env 文件中设置的所有变量都返回 null。
为什么会这样?
我实际上想在我的 .env 中设置一个中间件读取的配置,以便于本地开发行为。
这就是我在我的 Http''Kernel 中所做的
public function __construct(Application $app, Router $router)
{
if (env('check_env_key', false)) {
}
parent::__construct($app, $router);
}
我在Laravel 5.2应用程序中也有同样的事情。我在xdebug的帮助下深入研究了代码。
回答您的问题"为什么会这样"?
如果你看一下 HttpKernel 构造函数(它是内核的父级),你会看到 env 值尚未加载。请参阅 xdebug 中的 $_ENV 容器或转储它。
因此,为您收集值的 php 函数 (getenv) 将返回 false。并且,由于该错误,Laravel env 助手将返回默认值。
路线在 routes 文件中,$_ENV 容器填充了所有 env 值,因此返回了预期值。
这是一个时间问题。预期的行为在内核中尚不可用。这就是为什么... :-)
我认为 Laravel 在引导应用程序时加载 env 值,而不是之前。