我安装了新的Laravel 5拷贝。
我的detectEnvironment函数是这样定义的:
$app->detectEnvironment(function()
{
return 'local';
return getenv('APP_ENV') ?: 'production';
});在config\local中,我创建了database.php文件:
<?php
return [
'nothing' => 'new',
];我负责php artisan clear-compiled。
我的index WelcomeController方法是这样定义的:
public function index(Application $app)
{
echo $app->environment();
var_dump($app['config']['database']);
//echo $app['config']['database'];
return view('welcome');
}应用程序是以这种方式导入的:use Illuminate\Foundation\Application;
我得到的结果是:
local array(1) { ["nothing"]=> string(3) "new" } 然而,我希望Laravel将配置文件与生产配置文件级联(使用默认的config\database.php文件)。
奇怪的是,即使我评论了行return 'local';,再次运行php artisan clear-compiled,它也显示:
production array(1) { ["nothing"]=> string(3) "new" } 因此,它似乎总是加载database.php文件内容(此文件来自本地文件夹),并重写主database.php文件。当我将这个文件名更改为aaa.php时,它再次正常工作。
是错误还是环境配置不应该存储在config目录中?但如果没有,它们应该放在哪里呢?我不知道它是一个bug还是一个功能,所以如果有人知道它更多,请给我一个提示。
发布于 2014-12-21 18:34:07
尽管在Laravel (5.0)的文档中,有一些信息表明配置将层叠在一起,但事实并非如此。我在大约两周前对它进行了测试,目前,获得不同环境值的唯一方法是使用ENV文件,您可以在其中为当前环境设置自定义值。将设置放在目录中将不能像过去那样工作,但是它可能会改变,或者可能已经更改了2周。
发布于 2015-02-24 01:03:44
有一个套餐将级联配置系统带回到Laravel 5。
声明:我是作者。
发布于 2014-12-25 14:33:12
对我来说,它看起来就像在Laravel5dev分公司的缺陷。我能够通过添加手动环境检测和配置来解决问题。这个代码就是这么做的。
'default' => $app->environment()=='testing'?'sqlite':'mysql',https://stackoverflow.com/questions/27343021
复制相似问题