Laravel 5不读取点ENV文件中的值

时间:2014-10-14 16:24:12

标签: laravel laravel-5 laravel-environment

我不知道这个问题是否相关。 LARAVEL 5仍处于发展阶段。我看了拉拉维斯的一个关于LARAVEL 5中新功能的视频后拉了LARAVEL 5.我无法等待正式发布。

我将本地环境dot文件命名为.env.local.php。但由于某种原因,在使用$_ENV['KEY']时,我无法从此点文件中获取值。

我很确定我已正确配置了环境。在执行$app->environment()时显示正确的环境。 LARAVEL 5中我们从点文件中获取值的方式是否已更改,或者我错过了哪些内容?

1 个答案:

答案 0 :(得分:4)

默认情况下,environment.php文件中包含类似内容:

if (file_exists(__DIR__.'/../.env'))
{
    Dotenv::load(__DIR__.'/../');
}

所以只读取.env个文件(通知.env而不是.env.php - 所以你应该重命名你的文件 - 或者你可以添加第二个参数文件名.env.php如果你要)。默认情况下不会读取任何其他环境文件(.local.env) - 您需要手动加载它们。

如果您默认没有这样的代码,您可能应该再次更新/安装Laravel 5(经常出现更改)

现在,我不知道您使用的是哪种方法,但您可以在.env文件中输入您的环境名称,例如APP_ENV变量,创建.local.env文件使用您想要的内容,然后您可以在environment.php文件中使用:

if (file_exists(__DIR__.'/../.env'))
{
    Dotenv::load(__DIR__.'/../');

    if (getenv('APP_ENV') && file_exists(__DIR__.'/../.' .getenv('APP_ENV') .'.env')) {
        echo "loading";
        Dotenv::load(__DIR__ . '/../', '.' . getenv('APP_ENV') . '.env');
    }

}

如果您不想这样做,您可以根据$env更改另一个并加载您想要的env文件,假设您使用基于PC的环境检测。

如果不清楚,您还可以查看What's the correct way to set ENV variables in Laravel 5?