gRPC库已安装但不起作用

时间:2018-12-19 22:12:59

标签: php laravel google-cloud-firestore grpc

我在使用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

1 个答案:

答案 0 :(得分:3)

我发现了错误。 错误是我在Loaded Configuration File: /etc/php/7.2/cli/php.ini中编辑了php.ini,但是我也需要在Apache中编辑php.ini,该文件:/etc/php/7.2/apache2/php.ini