我的 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.app
、abc.testing.app
和 def.testing.app
您可以为主域(以及所有没有自定义 env 文件的子域)以及 .abc.env
和 创建
文件用于子域的自定义环境变量。.env
文件.def.env
关于Laravel 5 Dotenv 用于特定子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880331/