是否可以在laravel 5.5中使用多个环境文件

时间:2018-01-12 22:35:26

标签: php laravel apache

所以我试图让多个laravel站点(不同的域)使用相同的代码库,但使用基于域的不同环境文件(.env)。有没有办法让我能够做到这一点。例如,我有domain1.com和domain2.com使用相同的代码dir / var / www / laravel但domain1将使用.env1文件,domain2将使用.env2文件。这都在同一台服务器上。

任何帮助将不胜感激。谢谢。

4 个答案:

答案 0 :(得分:3)

使用多个.env文件不是一个好主意。但您可以为每个域创建不同的配置文件,并使用以下内容获取数据:

$domain = str_before(request->getHttpHost(), '.com'); // If domain is example.com, this will return 'example'
config($domain . '.some_value')

答案 1 :(得分:1)

如果您确实要使用多个环境文件。

您可以在\bootstrap\app.php

中加载不同的环境文件
if ($_SERVER['HTTP_HOST'] == "domain1.com") {
    $app->loadEnvironmentFrom('.env.domain1');
} else if ($_SERVER['HTTP_HOST'] == "domain2.com") {
    $app->loadEnvironmentFrom('.env.domain2');
}

答案 2 :(得分:0)

laravel框架只会加载一个.env

这是你应该做的:

  1. 将多个.env文件添加到您的项目中(例如:.env.domain1.env.domain1等。)
  2. 当您部署到域时,复制相应的.env文件(例如:cp .env.domain1 .env

答案 3 :(得分:0)

我写了一个可以做到这一点的软件包。它使用您的服务器主机名来确定应加载的配置。它包含一个配置文件,使您可以为服务器设置一个简短的通用名,并使用实际的主机名来确定要加载的环境文件。

运行该软件包随附的artisan命令时,它将生成.env.environment文件中设置的app/config/env_detector.php文件。

可以在以下位置找到该软件包:https://packagist.org/packages/casperwilkes/laravel-environment_detector