Я использую PHP, чтобы попытаться использовать Google Cloud Spanner. Я уже сделал gCloud настройки и все, и это правильно. Теперь мне нужно сделать соединение через PHP сделать CRUD с базой данных, которая находится в Spanner, но код ниже всегда возвращает ошибку:
Неустранимая ошибка PHP: неопределенная константа ‘Grpc \ STATUS_UNKNOWN’ в
/xxx/xxxx/www/vendor/google/cloud-spanner/Connection/Grpc.php на линии
129
Код у меня есть:
<?php
require 'vendor/autoload.php';
use Google\Cloud\Spanner\SpannerClient;
/* Error start here */
$spanner = new SpannerClient([
'projectId' => 'my-project-id'
]);
$db = $spanner->connect('instance', 'database');
$userQuery = $db->execute('SELECT * FROM usuario WHERE login = @login', [
'parameters' => [
'login' => 'devteam'
]
]);
$user = $userQuery->rows()->current();
echo 'Hello ' . $user['login'];
Требования, которые я использую в композиторе:
"require": {
"google/cloud": "^0.32.1",
"google/cloud-spanner": "^0.2.2"}
Я заметил, что если я вхожу через браузер, ошибка, представленная выше, продолжает появляться. Если я запускаю команду php teste.php на терминале он запускает скрипт правильно, т.е. терминал работает, а браузер — нет.
Клиентский ключ Google Cloud PHP только для gRPC. Это означает, что для его использования вам потребуется установить расширение gRPC PHP:
pecl install grpc
Как только вы это сделали, добавьте google/proto-client-php
а также google/gax
на ваш composer.json и запустите composer update
, После того, как это будет сделано, ошибка будет устранена.
Для тех, кто хочет получить более подробные инструкции, см. эта страница для установки и включения gRPC для PHP!
Поскольку вы упомянули, что он работает на CLI, но не на браузере, я могу сказать, что вам нужно включить расширение grpc в конфигурации вашего веб-сервера php.
Например. добавлять
extension=grpc.so
на ваш /etc/php/5.6/apache2/php.ini