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

环境目录中的database.php文件未加载到Laravel 4中,php,laravel-4,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目录中的defa

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

$env = $app->detectEnvironment(array(
'local' => array('your-machine-name')
));
由于使用以下各项,正确的环境似乎能够正确检测:

App::environment('local')
计算结果为TRUE,但它仅加载app/config目录中的default database.php

为了以防万一,它仍然与检测相关,我尝试了将本地硬编码为环境,但它具有相同的效果

$env = $app->detectEnvironment(function()
{
return 'local';
});
我还尝试为环境使用不同的名称,以防“local”有一些未记录的保留含义

我已经使用Laravel4在其他项目中成功地设置了环境,我无法用我的一生来计算在这种情况下有什么不同。如果您能就可能导致这种行为的原因提出任何建议,我将不胜感激

本地环境在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\u文件夹/bootstrap/start.php
文件中使用如下内容:

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

您还可以检查环境设置。这应该是可行的。

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

我同意这应该有效,但如果您重新阅读我的问题,您将看到start.php中的环境检测似乎工作正常,我已经在config/local文件夹中设置了local database.php。问题是,尽管环境被检测为本地,但没有加载database.php的本地版本,未加载
database.php
的本地版本,因为它试图使用config目录中的database.php文件中的凭据而不是config/local目录中的凭据连接到数据库。目前,我的解决方法是在config目录中的database.php中使用
if(App::environment('local'){return array(/*database details*/);}
语句,但我确实想隔离实际问题并解决它-感谢您迄今为止的帮助。现在我也遇到了同样的问题。在检查环境时,它是
本地的
,它从本地文件夹加载其他配置文件,但在数据库中,它不从本地文件夹加载配置,而是直接从生产环境加载配置。。。。令人惊讶的是,这种情况只发生在数据库配置中。Rest配置工作正常。我刚刚注意到还有一个未解决的问题似乎提到了同样的问题:谢谢!这很容易知道。我的生产配置文件包含对全局服务器变量的引用,该变量仅在生产服务器上可用(AWS Elastic Beanstalk上的RDS数据库变量)。由于这些在本地服务器和测试服务器中不可用,他们抛出了错误,然后没有加载具有正确详细信息的DB配置文件。谢谢你的回答,我有一个解决方法,我一直在使用,但现在我终于可以解决这个问题。