我正在尝试加载位于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文件似乎没有加载。
答案 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以了解环境设置。这应该有用。