我安装了全新的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
命令。
我的WelcomeController
控制器中的index
方法定义如下:
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
时,它又正常工作了。
这是一个 bug 还是环境配置不应该存储在 config
目录中?但如果不是,它们应该存储在哪里?我不知道这是一个 bug 还是一个特性,所以如果有人更了解,请给我一个提示。