Apo*_*Pal 8 php xampp laravel guzzle
我似乎遇到了一个奇怪的问题。我正在使用 Http 外观从一个 laravel 应用程序触发到另一个 laravel 应用程序的发布请求。这两个应用程序都链接到单独的数据库。当我尝试使用邮递员触发相同的端点时,它工作正常,但是当从其他 laravel 应用程序触发请求时,收件人 laravel 应用程序尝试使用发件人应用程序的数据库设置,但该设置不起作用。我目前在 Windows 上使用 Xampp 来托管这两个应用程序,并且软件包是最新版本。有没有人遇到过类似的问题或者您能提出解决方案吗?
代码如下: 发送POST请求的服务(Sender App(1)):
Http::post("http://localhost/second_app/public/api/test", array(
'id' => 1,
);
Run Code Online (Sandbox Code Playgroud)
接收请求的代码(接收器应用程序(2)):
public function test(Request $request)
{
$club = Club::find($request->id);
}
Run Code Online (Sandbox Code Playgroud)
我在日志文件中收到一个错误,表明它正在尝试clubs在first_app数据库中查找表,而它应该使用second_app数据库。我尝试记录配置和请求。该请求非常大,无法在此处发布,但我验证已正确接收。该日志的代码是:
Log::info("Received Request", ['database' => ['driver' => config('database.default'), 'name' => config('database.connections.'.config('database.default').'.database')]]);
Run Code Online (Sandbox Code Playgroud)
如果请求是从 Postman 发送到 secondary_app 或从 secondary_app 发送到自身(使用 Http 门面)
[2021-08-17 03:13:56] local.INFO: Received Request {"database":{"driver":"mysql","name":"second_app"}}
Run Code Online (Sandbox Code Playgroud)
如果请求是使用 Http 外观从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)
Run Code Online (Sandbox Code Playgroud)
应用程序的配置与默认值相同。.env 填充了以下详细信息
#first_app
DB_DATABASE="first_app"
#second_app
DB_DATABASE="second_app"
Run Code Online (Sandbox Code Playgroud)
更新
我也尝试使用单独的虚拟主机。firstapp.test并secondapp.test已设置,文档根目录指向公共目录。问题仍然相同,并且在发送请求时使用了不正确的配置,first_app但当请求从 Postman 内部发送second_app或从 Postman内部发送时,它可以正常工作(如之前所做的那样)
我尝试在接收者应用程序中对配置值进行硬编码,database.php而不是使用 env 帮助程序,这解决了问题。看起来 env 帮助程序通过在接收方应用程序中使用发送方应用程序的环境变量而导致了冲突。
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |