我正试图加载位于我的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')
));
您也可以检查环境设置的答案。