我正在运行 (Windows) IIS 和 PHP 8.1、grpc + 钠。我有来自 Google Firebase 的凭证文件,我只是从名为 \'info\' 的集合中读取。在同一台机器上,我很失望...
我正在运行 (Windows) IIS,其中包含 PHP 8.1、grpc + 钠。我有来自 Google Firebase 的凭证文件,我只是从名为 \'info\' 的集合中读取。
在我运行 IIS 和 Apache 的同一台机器上,相同的代码在 Apache(Laragon)中运行良好,但在 IIS 中却不行。IIS 返回此错误:
{\'错误\':\'{\n\'消息\':\'空地址列表:\',\n\'代码\':14,\n\'状态\':\'不可用\',\n\'详细信息\':[]\n}\'}
我尝试过 PHP8.1、8.2 和 8.3,但出现同样的错误。
我创建了一个测试函数来提供帮助,这是我正在运行的函数。
public function testFirestore()
{
$credentialsPath = base_path(env('FIREBASE_CREDENTIALS'));
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentialsPath);
putenv('GRPC_VERBOSITY=DEBUG');
putenv('GRPC_TRACE=all');
try {
// Log the credentials path and environment variable
Log::info('GOOGLE_APPLICATION_CREDENTIALS: ' . getenv('GOOGLE_APPLICATION_CREDENTIALS'));
Log::info('Service account file exists: ' . (file_exists($credentialsPath) ? 'yes' : 'no'));
Log::info('GRPC_VERBOSITY: ' . getenv('GRPC_VERBOSITY'));
Log::info('GRPC_TRACE: ' . getenv('GRPC_TRACE'));
$firestore = new FirestoreClient([
'projectId' => '[projectid]',
]);
$collection = $firestore->collection('info');
$documents = $collection->documents();
$result = [];
foreach ($documents as $document) {
$result[] = [
'id' => $document->id(),
'data' => $document->data()
];
}
return response()->json($result);
} catch (\Exception $e) {
Log::error('Firestore error: ' . $e->getMessage());
return response()->json(['error' => $e->getMessage()], 500);
}
}
如果有帮助的话我很乐意发送我的 php.ini...