Laravel 从另一个 Laravel 应用发送 Http 请求时使用了不正确的数据库

Laravel uses incorrect database when Http request is sent from another Laravel app

我似乎 运行 遇到了一个奇怪的问题。我正在使用从 laravel 应用程序到另一个 laravel 应用程序的 Http facade 触发 post 请求。这两个应用程序都链接到单独的数据库。当我尝试使用 postman 触发相同的端点时,它工作正常但是当请求从另一个 laravel 应用程序触发时,接收者 laravel 应用程序尝试使用发送者应用程序的数据库不起作用的设置。我目前在 Windows 上使用 Xampp 来托管这两个应用程序,并且软件包是最新版本。有没有人遇到过类似的问题,或者您能提出解决方案吗?

代码如下: 发送 POST 请求的服务(Sender App (1)):

Http::post("http://localhost/second_app/public/api/test", array(
                    'id' => 1,
);

接收请求的代码(Receiver App (2)):

public function test(Request $request)
{
    $club = Club::find($request->id);
}

我在日志文件中收到一个错误,它说它正在尝试在 first_app 数据库中查找 clubs table,而它应该使用 second_app 数据库。 我尝试记录配置和请求。该请求非常大,无法在此处 posted,但我确认已正确接收。此日志的代码是:

Log::info("Received Request", ['database' => ['driver' => config('database.default'), 'name' => config('database.connections.'.config('database.default').'.database')]]);

如果请求是从 Postman 发送到 second_app 或从 second_app 发送到它自己(使用 Http facade)

[2021-08-17 03:13:56] local.INFO: Received Request {"database":{"driver":"mysql","name":"second_app"}} 

如果使用 Http facade

将请求从 first_app 发送到 second_app
[2021-08-17 03:14:01] local.INFO: Received Request {"database":{"driver":"mysql","name":"first_app"}} 
[2021-08-17 03:14:01] local.INFO: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'first_app.projects' doesn't exist (SQL: select * from `projects` where `code` = ABC_01 limit 1) {"exception":"[object] (Illuminate\Database\QueryException(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'first_app.projects' doesn't exist (SQL: select * from `projects` where `code` = ABC_01 limit 1) at \vendor\laravel\framework\src\Illuminate\Database\Connection.php:692)

应用程序的配置与默认设置相同。 .env 填充了以下详细信息

#first_app
DB_DATABASE="first_app"

#second_app
DB_DATABASE="second_app"

更新 我也尝试使用单独的虚拟主机。 firstapp.testsecondapp.test 已设置,文档根目录指向 public 目录。问题仍然存在,当从 first_app 发送请求时使用了不正确的配置,但当从 second_app 或 Postman[=] 内部发送请求时它工作正常(就像之前那样) 27=]

我尝试在收件人应用程序中对 database.php 配置值进行硬编码,而不是使用 env 帮助程序,这解决了问题。看起来 env 帮助程序在接收方应用中使用发送方应用的环境变量导致了冲突。