我在使用Google Firestore PHP Api时遇到错误,当我尝试连接到Firestore时,服务器返回以下错误:The requested client requires the gRPC extension. Please see https://cloud.google.com/php/grpc for installation instructions
。错误来自vendor/google/cloud/Core/src/ClientTrait.php
,因为函数isGrpLoaded响应为false:
/**
* Abstract the checking of the grpc extension for unit testing.
*
* @codeCoverageIgnore
* @return bool
*/
protected function isGrpcLoaded()
{
return extension_loaded('grpc');
}
我已经按照Google https://cloud.google.com/php/grpc的说明安装了gRPC。我安装PECL,安装Composer,安装gRPC扩展,将grpc扩展添加到php.ini文件,安装Protobuf运行时库,还将protobuf扩展添加到php.ini。
所以在我的作曲家中,我有以下几行:
...
google/grpc-gcp 0.1.3 gRPC GCP library for channel management
google/protobuf v3.6.1 proto library for PHP
grpc/grpc 1.15.0 gRPC library for PHP
...
在我的php.ini文件中,有这两行:
extension=protobuf.so
extension=grpc.so
问题出在这里,当我在服务器终端中执行以下代码时:
sudo php -r "echo extension_loaded('grpc') ? 'yes' : 'no';"
服务器用yes
回应我,一切似乎都很好。
但是如果我创建这样的php文件:
<?php
echo extension_loaded('grpc') ? 'yes' : 'no';
?>
响应为no
。
我正在使用
Ubuntu 16.04.5 LTS
PHP 7.2.13
答案 0 :(得分:3)
我发现了错误。
错误是我在Loaded Configuration File: /etc/php/7.2/cli/php.ini
中编辑了php.ini,但是我也需要在Apache中编辑php.ini,该文件:/etc/php/7.2/apache2/php.ini