所以我试图让多个laravel站点(不同的域)使用相同的代码库,但使用基于域的不同环境文件(.env)。有没有办法让我能够做到这一点。例如,我有domain1.com和domain2.com使用相同的代码dir / var / www / laravel但domain1将使用.env1文件,domain2将使用.env2文件。这都在同一台服务器上。
任何帮助将不胜感激。谢谢。
答案 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
。
这是你应该做的:
.env.domain1
,.env.domain1
等。).env
文件(例如:cp .env.domain1 .env
答案 3 :(得分:0)
我写了一个可以做到这一点的软件包。它使用您的服务器主机名来确定应加载的配置。它包含一个配置文件,使您可以为服务器设置一个简短的通用名,并使用实际的主机名来确定要加载的环境文件。
运行该软件包随附的artisan命令时,它将生成.env.environment
文件中设置的app/config/env_detector.php
文件。
可以在以下位置找到该软件包:https://packagist.org/packages/casperwilkes/laravel-environment_detector