在 Laravel、"Class 'Grpc\ChannelCredentials' not found." 中使用 grpc

Using grpc in Laravel, "Class 'Grpc\ChannelCredentials' not found."

我正在尝试在 Laravel 项目中使用 grpc。

这是我的 composer.json 文件的一部分:

"require": {
    ...
    "datto/protobuf-php": "dev-master",
    "google/auth": "^0.7.0",
    "grpc/grpc": "dev-release-0_13",
    ...
}

我已经从我的原型文件生成了一个 php 文件。它位于 app/services/ 并包含在 composer.json autoload.files 部分中。我 运行 composer install 没有问题。

我已经创建了测试路线。它有以下代码:

$client = new vat_service\VatServiceClient('localhost:50051', [
    'credentials' => Grpc\ChannelCredentials::createInsecure()
]);

但是我在访问路由时收到响应Class 'Grpc\ChannelCredentials' not found.

Laravel 应用程序 运行 在 Homestead vagrant box 中。

我不知道如何进行。我缺少依赖项吗?我是不是没安装什么东西?

试试这个

  • 作曲家更新
  • 将vat_service\VatServiceClient替换为 \vat_service\VatServiceClient

如果没有帮助,请阅读此处 https://github.com/grpc/grpc/tree/release-0_14/examples/php

如果在 comments.Let 中没有 help.Write 我们尝试其他方法

我已经解决了这个问题,但我不确定以下哪个步骤是解决方案。

我尝试过的事情:

  • 我在 Homestead box (sudo pecl install grpc-beta) 中安装了 grpc-beta。
  • 我从 "grpc/grpc": "dev-release-0_13" 更新到 "grpc/grpc": "^0.15.0"
  • 我向 composer.json 添加了一个存储库:

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/stanley-cheung/Protobuf-PHP"
        }
    ],
    
  • 我在 Homestead 盒子里重启了 NGINX
  • 我用 composer self-update
  • 更新了作曲家

我添加了这个作为答案。请告知是否更适合作为对开放问题的编辑或作为评论。

此外,了解解决方案会很有趣。

我遇到了同样的问题,但上述解决方案对我不起作用。我的问题是 composer 中的 grpc\grpc PHP 包和 grpc.so 库不是同一个版本。我有 1.15 个 PHP 包和 1.16 个库。

您可以使用以下命令安装特定版本的库:

sudo pecl install grpc-1.15.0