База данных 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-разработчик. Уточняющий вопрос | утверждение: учетные данные Firebase (!) не являются учетными данными приложения Google по умолчанию. Firebase — это не Firestore. Это не объясняет ошибку, поскольку я ожидал бы ошибку без аутентификации, но если ваши учетные данные Firebase включают ключи API Firebase, домен аутентификации и т. д., то их нельзя использовать для аутентификации в клиенте Firestore. FirestoreClient не должен нуждаться в каких-либо параметрах, поскольку это можно определить из учетных данных.

DazWilkin 02.09.2024 18:02

Ошибка, с которой вы сталкиваетесь, указывает на то, что клиент gRPC в PHP не может разрешить адрес сервера или подключиться к нему. Эта проблема может возникнуть по нескольким причинам. Я предлагаю вам включить подробное ведение журнала для gRPC и PHP в IIS, чтобы получить больше информация.

samwu 03.09.2024 04:37

Я включил ведение журнала (там много данных...)) chand=000002A326287A70 lb_call=000002A326076000: добавление ожидающего пакета с индексом 0 chand=000002A326287A70 lb_call=000002A326076000: захват мьютекса LB для получения I 1725544810.338000000 chand=000002A326287A70 lb_call =000002A326076000: выполнение выбора с помощью средства выбора =000002A326197CF0 I1725544810.339000000 chand=000002A326287A70 lb_call=000002A326076000: Ошибка выбора LB: НЕДОСТУПНО: пустой список адресов: я не уверен, куда посмотрим дальше... любая помощь будет оценена по достоинству.

MiloTheGreat 05.09.2024 16:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Другие вопросы по теме