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://blog.leeay.com/archives/91/
所有文章均采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。 您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
如果博客部分文章出现空白或异常,请留言或者联系博主修复。