未在Laravel 4中加载环境目录中的database.php文件

时间:2014-06-14 15:19:16

标签: php laravel-4

我正在尝试加载位于app / config / local目录中的本地版本的database.php文件。 我在start.php中为本地设置了我的$ env环境检测。

$env = $app->detectEnvironment(array(
'local' => array('your-machine-name')
));

使用结果时,正确的环境似乎正确检测到:

App::environment('local')

评估为TRUE,但它只在app / config目录中加载默认的database.php。

万一它仍然与检测有关,我尝试过将硬盘编码为环境,但效果相同。

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

我还尝试使用不同的名称来保护环境,以便本地'有一些无证的保留意义。

我已经使用Laravel 4在其他项目中成功设置了环境,在这种情况下,我无法解决我的生活中的不同之处。我对任何可能导致这种行为的建议表示感谢。

本地环境在MAMP上运行。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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')
));

您还可以检查this answer以了解环境设置。这应该有用。