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即可。
Last modification:March 21st, 2022 at 01:11 pm
如果觉得我的文章对你有用,请随意赞赏