Laravel 根据域名 使用不同的env配置文件
前言
- 因为特殊场景需要,项目使用了多域名,但是由于需要针对每个域名进行特殊的配置,根据网上的不通环境自动切换env的方法,研究出一份简单的例子。
- 没深入发掘具体功能,只是一个简单的实现,求轻喷
实现
bootstrap/app.php
把代码修改如下:- 原始文件:
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
- 修改如下:
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
require_once __DIR__ . '/env.php'; // 引入多env配置文件
在bootstrap
文件夹下新增文件env.php
,内容如下:
<?php
// 环境处理
/* @var Illuminate\Foundation\Application $app */
if ($app->runningInConsole()) {
// console形式
$suffix = $app->detectEnvironment(function () {
return '';
});
} else {
// 其他形式
if (empty($_SERVER['SERVER_NAME'])) {
die('[error] no host');
}
$suffix = '.' . $_SERVER['SERVER_NAME'];
if (!file_exists(dirname(__DIR__) . '/.env' . $suffix)) {
$suffix = '';
}
}
// 写入环境配置
$app->loadEnvironmentFrom('.env' . $suffix);
使用
- 默认使用原生的
.env
文件。 - 特定域名,如
www.abc.com
,则新建一个.env.www.abc.com
即可。
版权属于:塵世不再
本文链接:https://www.leeay.com/archives/91/
所有文章均采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。 您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
如果博客部分文章出现空白或异常,请留言或者联系博主修复。