Laravel 5 Dotenv 用于特定子域

标签 laravel laravel-5 phpdotenv laravel-environment

我的 laravel 5 应用程序中有几个子域,每个子域都有特定的配置,例如 mail、nocaptcha 等。

如何设置 .env 文件以使用我的特定子域?

最佳答案

是的,您可以为每个子域使用单独的 .env 文件,因此如果您在配置中使用 env 变量,则无需进行太大修改即可工作。

创建包含以下内容的 bootstrap/env.php 文件:

<?php
$app->detectEnvironment(function () use ($app) {
    if (!isset($_SERVER['HTTP_HOST'])) {
        Dotenv::load($app['path.base'], $app->environmentFile());
    }

    $pos = mb_strpos($_SERVER['HTTP_HOST'], '.');
    $prefix = '';
    if ($pos) {
        $prefix = mb_substr($_SERVER['HTTP_HOST'], 0, $pos);
    }
    $file = '.' . $prefix . '.env';

    if (!file_exists($app['path.base'] . '/' . $file)) {
        $file = '.env';
    }

    Dotenv::load($app['path.base'], $file);
});

现在修改 bootstrap/app.php 以加载自定义 env.php 文件。只需添加:

require('env.php');

之后

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

现在,您可以为每个域创建单独的环境文件,例如,如果您使用 testing.appabc.testing.appdef.testing.app 您可以为主域(以及所有没有自定义 env 文件的子域)以及 .abc.env 创建 .env 文件.def.env 文件用于子域的自定义环境变量。

关于Laravel 5 Dotenv 用于特定子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880331/

相关文章:

php - 如何邮寄表单的值而不是 contact.blade.php 的屏幕截图

php - 如何使用 PHP 执行 sed -i '/^MAIL_DRIVER=/s/=.*/=log/' .env 之类的内容来更新 Laravel dotenv 文件中的变量值

ajax - 在 october cmd 上使用 AJAX 将值从 FORM 插入到 DB

php - PDOConnection.php 第 24 行中的 FatalThrowableError Laravel 5.3

laravel - 在 Laravel 的 Blade 模板中显示格式化属性

php - 为什么使用 dotenv 库而不是解析 ini 文件?

php - dotenv 在生产环境中需要 .env 文件

php - 无法为 api 路由 laravel 设置 cookie

Laravel 5.3 更改 Auth 中的用户表

laravel - 登录后出现太多重定向错误