Laravel 不同环境加载不同的.env文件
假设有4个.env文件。分别为
.env.local
.env.dev
.env.test
.env.prd
方式一
第一步:bootstrap\app.php 加入代码
$envs = ['local','dev','test','prd'];
$env = get_cfg_var('env');
if(empty($env) || !in_array($env, $envs)){
exit('no env files');
}
$env = '.env.'.$env;
$app->loadEnvironmentFrom($env);
第二步:php.ini文件中添加一行
env = local
方式二
假设不同环境域名分别为:
local-domain.com
dev-domain.com
test-domain.com
domain.com
bootstrap\app.php 加入代码
if (!$app->runningInConsole()) {//HTTP形式
if (empty($_SERVER['HTTP_HOST'])) {
die('[error] no host');
}
$app_env = substr($_SERVER['HTTP_HOST'],0,strpos($_SERVER['HTTP_HOST'],'-'));
} else {//其它形式
$app_env = $app->detectEnvironment(function () {
return 'prd';
});
}
if (empty($app_env)) {
die('[error] no environment');
}
//写入环境配置
//Dotenv::setEnvironmentVariable('APP_ENV', $app_env);
$app->loadEnvironmentFrom('.env.' . $app_env);
// ->useEnvironmentPath(base_path('env'));