База данных Google Firestore не может подключиться к IIS (Laragon Apache в порядке) «Пустой список адресов:» Ошибка: 14

Я использую (Windows) IIS с PHP 8.1, grpc + натрия. У меня есть файл учетных данных из Google Firebase, и я просто читаю из коллекции под названием «информация».

На той же машине я использую 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, если это поможет....

🤔 А знаете ли вы, что...
PHP был создан в 1994 году Расмусом Лердорфом и первоначально назывался 'Personal Home Page'.


50
1

Ответ:

Решено

Оказывается, сертификат pem был неправильным.

Загрузите сертификат отсюда...

https://github.com/grpc/grpc/blob/master/etc/roots.pem

Добавьте переменную env с ключом «GRPC_DEFAULT_SSL_ROOTS_FILE_PATH» и значением пути, в котором вы сохранили загрузку. «C:\dev\certs\roots.pem». Затем перезагрузитесь.