gpt4 book ai didi

php - 如何在单个 Laravel 应用程序中为多个域加载不同的 .env 文件?

转载 作者:行者123 更新时间:2023-12-03 21:23:21 26 4
gpt4 key购买 nike

我想通过多个域访问单个 Laravel 应用程序。

对于路由,我使用了 laravel 路由模式,例如。

$appRoutes = function() {
Route::group(['namespace'=>"Interface1"], function(){

/** route for index page and User authentication pages **/
Route::get('/', 'LoginController@showLoginForm')->name('login');
});
};

Route::group(array('domain' => 'example1.com'), $appRoutes);
Route::group(array('domain' => 'example2.com'), $appRoutes);

现在每个域的 .env 我已经替换了 AppServiceProvider.php 注册方法中的配置变量值:
   if(isset($_SERVER['HTTP_HOST']) && !empty($_SERVER['HTTP_HOST']) ){ 
if($_SERVER['HTTP_HOST']=='example1.com'){
$configArray = [
'APP_NAME' => 'Application 1',
'APP_URL' => 'http://example1.com',
];
}else{
$configArray = [
'APP_NAME' => 'Application 2',
'APP_URL' => 'http://example2.com,
];
}
config($configArray);
}

但我仍然没有使用 url(config('app.url')) 获得正确的域网址

如何加载所有 .env每个域的变量覆盖?

最佳答案

config()设置配置设置而不是环境设置。

您必须执行以下操作:

if(isset($_SERVER['HTTP_HOST']) && !empty($_SERVER['HTTP_HOST']) ){ 
if($_SERVER['HTTP_HOST']=='example1.com'){
$configArray = [
'app.name' => 'Application 2',
'app.url' => 'http://example2.com',
]; ;
}else{
$configArray = [
'app.name' => 'Application 2',
'app.url' => 'http://example2.com',
];
}
config($configArray);
}

然后,您可以通过以下方式检索值:
config("app.name");
config("app.url");

据我所知,在实际加载配置之前没有办法修改环境变量,因为在注册服务提供者之前加载配置并读取环境变量。

还要小心使用 HTTP_HOST因为它是客户端设置的 header ,可能不可靠。

关于php - 如何在单个 Laravel 应用程序中为多个域加载不同的 .env 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50876296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com