本地和生产的Laravel环境文件可能无法正常工作?

在Laravel 4中,我正在设置我的本地开发机器(我的笔记本电脑),然后我有我的生产服务器.

在我的/bootstrap/start.php中

$env = $app->detectEnvironment(array(

'local'      => array('MacBook-Pro-2.local'),
'production' => array('ripken'),

));

然后我在我的根目录中创建了一个.env.local.php,其中包含以下内容:

<?php

return [

// Database Connection Settings
'db_host'     => '127.0.0.1',
'db_name'     => 'censored',
'db_user'     => 'censored',
'db_password' => 'censored'

];

那部分有效.但是,我去了我的生产服务器并创建了同样的文件,名为.env.production.php,并且它没有加载该文件中的变量.我不知道是什么让我想到这样做,但我重命名了文件名.env.php,名字中没有“生产”而且有效.

因此,我的问题是,为什么.env.production.php不起作用?我认为这就是Laravel的好人们想要我命名我的各种环境文件.

最佳答案
生产是’默认’规则集,所以它有点特殊. Laravel将在加载生产时查找“基本”或“默认”规则,而不是实际的名称生成.

所以你可以改变

$env = $app->detectEnvironment(array(
'local'      => array('MacBook-Pro-2.local'),
'production' => array('ripken'),
));

$env = $app->detectEnvironment(array(
'local'      => array('MacBook-Pro-2.local'),    
));

这样任何不是“MacBook-Pro-2.local”的东西都将自动生产.然后只使用默认的.env.php进行生产设置.

每个其他环境都需要明确定义 – 例如.env.local.php和.env.testing.php等

转载注明原文:本地和生产的Laravel环境文件可能无法正常工作? - 代码日志