本地和生产环境下的Laravel环境文件可能无法按预期工作?

4
在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,但它不会加载该文件中的变量。我不知道是什么促使我这样做,但我把该文件重命名为没有“production”名称的.env.php,这时它就可以被使用了。
因此,我的问题是,为什么.env.production.php无法工作?我认为这就是Laravel的开发人员要求我命名各种环境文件的方式。
1个回答

10

Production是“默认”规则集,因此它有点特殊。当加载Production时,Laravel将查找“基本”或“默认”规则,而不是实际名称Production。

因此,您可以更改

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

to

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

那么,任何不是“MacBook-Pro-2.local”的东西都会自动成为生产环境。然后,只需使用默认的.env.php文件进行生产设置即可。
其他所有环境都需要明确定义 - 例如.env.local.php.env.testing.php等。

太好了,知道这个真是太棒了。我在文档中找不到这个信息。非常感谢! - Chris Farrugia
这很奇怪,因为如果我创建.env.php文件,就会出现“重定向循环”的问题。 - ExoticSeagull
谢谢!这真的很糟糕,因为没有任何文档记录。你会认为它要么(1)允许.env.production.php或(2)抛出特定的错误。 - craig.tadlock
太好了,感谢这个提示。建议将这些信息添加到文档中! - bhu Boue vidya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接