首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5配置-环境和覆盖

Laravel 5配置-环境和覆盖
EN

Stack Overflow用户
提问于 2014-12-07 13:19:28
回答 4查看 14.5K关注 0票数 12

我安装了新的Laravel 5拷贝。

我的detectEnvironment函数是这样定义的:

代码语言:javascript
复制
$app->detectEnvironment(function()
{
    return 'local';
    return getenv('APP_ENV') ?: 'production';
});

config\local中,我创建了database.php文件:

代码语言:javascript
复制
<?php

return [
    'nothing' => 'new',
];

我负责php artisan clear-compiled

我的index WelcomeController方法是这样定义的:

代码语言:javascript
复制
public function index(Application $app)
{
    echo $app->environment();
    var_dump($app['config']['database']);
    //echo $app['config']['database'];
    return view('welcome');
}

应用程序是以这种方式导入的:use Illuminate\Foundation\Application;

我得到的结果是:

代码语言:javascript
复制
local array(1) { ["nothing"]=> string(3) "new" } 

然而,我希望Laravel将配置文件与生产配置文件级联(使用默认的config\database.php文件)。

奇怪的是,即使我评论了行return 'local';,再次运行php artisan clear-compiled,它也显示:

代码语言:javascript
复制
production array(1) { ["nothing"]=> string(3) "new" } 

因此,它似乎总是加载database.php文件内容(此文件来自本地文件夹),并重写主database.php文件。当我将这个文件名更改为aaa.php时,它再次正常工作。

是错误还是环境配置不应该存储在config目录中?但如果没有,它们应该放在哪里呢?我不知道它是一个bug还是一个功能,所以如果有人知道它更多,请给我一个提示。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-21 18:34:07

尽管在Laravel (5.0)的文档中,有一些信息表明配置将层叠在一起,但事实并非如此。我在大约两周前对它进行了测试,目前,获得不同环境值的唯一方法是使用ENV文件,您可以在其中为当前环境设置自定义值。将设置放在目录中将不能像过去那样工作,但是它可能会改变,或者可能已经更改了2周。

票数 13
EN

Stack Overflow用户

发布于 2015-02-24 01:03:44

有一个套餐将级联配置系统带回到Laravel 5。

声明:我是作者。

票数 7
EN

Stack Overflow用户

发布于 2014-12-25 14:33:12

对我来说,它看起来就像在Laravel5dev分公司的缺陷。我能够通过添加手动环境检测和配置来解决问题。这个代码就是这么做的。

代码语言:javascript
复制
'default' => $app->environment()=='testing'?'sqlite':'mysql',
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27343021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档