在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的优秀人员希望我命名我的各种环境文件。
答案 0 :(得分:9)
生产是默认的&#39;规则集,所以有点特别。 Laravel将寻找&#34; base&#34;或&#34;默认&#34;加载生产时的规则,而不是实际的名称生成。
所以你可以改变
$env = $app->detectEnvironment(array(
'local' => array('MacBook-Pro-2.local'),
'production' => array('ripken'),
));
到
$env = $app->detectEnvironment(array(
'local' => array('MacBook-Pro-2.local'),
));
那样的任何东西都不是&#34; MacBook-Pro-2.local&#34;将自动生产。然后只需使用默认的.env.php
进行生产设置。
需要明确定义其他所有环境 - 例如 .env.local.php 和 .env.testing.php 等