【问题标题】:Class 'Grpc\BaseStub' not found找不到类“Grpc\BaseStub”
【发布时间】:2019-10-08 14:02:11
【问题描述】:

尝试运行由protoc 从一堆*.proto 文件生成的PHP 客户端代码。 PHP 代码在 php7.3 的 docker 容器上运行,并安装并启用了 GRPC 扩展:pecl/grpc is already installed and is the same as the released version 1.23.1

当代码运行时,我收到以下错误:Class 'Grpc\BaseStub' not found

错误是由这一行触发的:class ProductServiceClient extends \Grpc\BaseStub {。这是自动生成的代码中的一行,因此无法修改。

[编辑] 运行composer require grpc/grpc 解决了这个问题;但是,我现在有Class 'Google\Protobuf\Internal\Message' not found

[编辑] 运行 composer require google/protobuf 解决了第二个问题。

【问题讨论】:

  • 这个问题解决了吗?
  • @StanleyCheung oui,desole。我不想删除它,因为我认为它可能对其他人有帮助。
  • @chaseisabelle 你有机会用原生扩展而不是 composer 包来修复它吗?
  • @chaseisabelle 要解决第二个问题,您需要安装 protobuf 扩展 pecl install -f protobuf

标签: php grpc


【解决方案1】:

尝试添加 grpc 库:

composer require grpc/grpc

【讨论】:

  • 这是一个使用 gRPC 的纯 PHP 版本而不是使用编译版本的方法。根据 gRPC 文档,最好使用 compile c 版本(PHP 扩展),因为它在性能方面要好得多。
  • @KhaledAttia,看起来它已经针对较新的版本进行了更改-至少对于 grpc-1.37,文档中有一个新注释In addition to the grpc extension, you will need to install the grpc/grpc composer package as well-github.com/grpc/grpc/tree/master/src/php#composer-package
猜你喜欢
  • 2016-11-06
  • 2019-04-29
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2022-01-25
  • 2019-12-16
相关资源
最近更新 更多