Google Cloud Vision - PHP из терминала - ошибка загрузки учетных данных - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь работать с Google Cloud Vision API с помощью PHP.Я создал свою первую тестовую страницу, и при запуске с веб-сайта PHP работает правильно, без проблем.У меня есть новый поворот в моем проекте, и я хочу запустить тот же код PHP из терминала.

Проблема, с которой я столкнулся сейчас, заключается в том, что я получаю сообщение об ошибке, что у моего сценария нет учетных данныхзагружен.

Вот код, который я использую для загрузки файла учетных данных, который работает в моей версии веб-сайта ...

putenv('GOOGLE_APPLICATION_CREDENTIALS=Credential-file.json');

Это не работает на моей версии терминала запускакод.Итак, я пробовал пару других вариантов, таких как ...

putenv('GOOGLE_APPLICATION_CREDENTIALS=/Full/Path/To/Credential-file.json');

и

$_ENV['GOOGLE_APPLICATION_CREDENTIALS'] = "/Full/Path/To/Credential-file.json";

Точная ошибка ...

PHP Fatal error:  Uncaught DomainException: Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information in /Library/WebServer/Documents/google_vision/vendor/google/auth/src/ApplicationDefaultCredentials.php:156

Мой вопросэто ... Есть ли лучший способ загрузить файл учетных данных, когда я пытаюсь запустить свой PHP из терминала?Или какую ошибку я совершаю в своей версии?

Я должен упомянуть, что я запускаю это на MacOS с клиентскими библиотеками Google Cloud.

Буду признателен за любую помощь / предложения.

Заранее спасибо!

1 Ответ

0 голосов
/ 15 июня 2019

Сообщение об ошибке указывает, что переменная установлена ​​неправильно (в отличие от неверного пути).

putenv длится только продолжительность текущего сценария.Установка значений на $_ENV не делает их доступными для getenv, метода, используемого библиотекой авторизации Google.Вы устанавливаете переменную среды учетных данных в том же самом скрипте, который выполняете?

Вы также можете указать значение в вызове:

GOOGLE_APPLICATION_CREDENTIALS=/path/to/keyfile.json php my-script.php

Или установить переменную в сеансе терминала.:

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/keyfile.json
php my-script.php

Если вы используете Google\Cloud\Vision\V1\ImageAnnotatorClient, вы можете аутентифицироваться с помощью ключевого файла напрямую:

use Google\Cloud\Vision\V1\ImageAnnotatorClient;

$vision = new ImageAnnotatorClient([
    'credentials' => '/path/to/keyfile.json
]);

Или с помощью Google\Cloud\Vision\VisionClient:

use Google\Cloud\Vision\VisionClient;

$vision = new VisionClient([
    'keyFilePath' => '/path/to/keyfile.json'
]);
...