在Laravel 4中没有从环境目录加载database.php文件


database.php file from environment directory not being loaded in Laravel 4

我正试图加载位于我的app/config/local目录下的数据库.php文件的本地版本。我已经在start.php中为local.

设置了$ environment环境检测。
$env = $app->detectEnvironment(array(
'local' => array('your-machine-name')
));

由于使用

,正确的环境似乎正在正确地检测
App::environment('local')

的值为TRUE,但是它只加载app/config目录下默认的database.php。

只是为了防止它仍然与检测有关,我已经尝试了硬编码本地作为环境,但它有相同的效果。

$env = $app->detectEnvironment(function()
{
return 'local';
});

我还尝试使用不同的环境名称,以防'local'有一些未记录的保留含义。

我已经成功地使用Laravel 4在其他项目中设置了环境,我不能为我的生活弄清楚在这种情况下有什么不同。如果你能告诉我是什么导致了这种行为,我将不胜感激。

本地环境在MAMP上运行。

我只是做了一个额外的测试,发现app.php文件在我的本地文件夹加载正确。只有本地database.php文件没有加载。

首先加载生产配置文件,然后与来自其他环境的覆盖合并。如果生产文件产生一个错误(例如未定义的索引),配置加载将在不加载覆盖的情况下提前退出。检查日志中是否产生错误。如果是这样,在生产配置文件中,在尝试使用它之前检查值是否设置,然后本地配置文件将正确加载。

在您的项目app/config目录下,您应该创建一个名为local的目录,然后在该目录下创建一个名为database.php的文件,并在该文件中提供配置,例如:

// File: app/config/local/database.php
return array(
'connections' => array(
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'myTestDb', // myTestDb is a db name for example
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
        'pgsql' => array(
            'driver'   => 'pgsql',
            //...
        ),
    ),
);

然后在你的project_folder/bootstrap/start.php文件中使用这样的东西:

$env = $app->detectEnvironment(array(
'local' => array('*.dev', gethostname()),
    'production' => array('*.com', '*.net')
));

您也可以检查环境设置的答案。