2015-06-19 16 views
1

似乎在Middleware Kernel constructor()事件中,儘管我有權訪問env('')幫助程序,但.env文件中設置的所有變量均返回null。在中間件內核構造函數中訪問.env環境變量

這是怎麼發生的?

我其實想要在我的.env中設置一個配置,讓中間件讀取以促進本地開發行爲。

這是我在做什麼我的HTTP \內核

public function __construct(Application $app, Router $router) 
{ 
    if (env('check_env_key', false)) { 

    } 
    parent::__construct($app, $router); 
} 
+0

你能訪問其他地方的變量嗎?控制器?以及你在做什麼操作系統? –

+0

是的我可以訪問它,例如在routes.php如果我做env('checl_env_key')我得到我的價值,但從上面的構造函數我得到null。我正在開發Windows 8.1的PHP 5.6(流浪者) – user391986

回答

0

我有同樣的事情在我的Laravel 5.2的應用程序。我在xdebug的幫助下潛入了代碼。

要回答你的問題'爲什麼會發生這種情況'?

如果您看看HttpKernel構造函數(它是內核的父代),您會看到env值尚未加載。查看xdebug中的$ _ENV容器或轉儲它。

因此,爲您收集價值的PHP函數(getenv)將返回false。而且,由於這個錯誤,Laravel env助手將返回默認值。

ROUTES 在路徑文件中,$ _ENV容器被所有的env值填充,所以返回期望值。

這是時間問題。預期的行爲在內核中尚不可用。這就是爲什麼... :-)

我認爲Laravel在引導應用程序時加載env值,而不是之前。