在Laravel中使用grpc,找不到“Class'Grpc \ ChannelCredentials'。”

时间:2016-07-04 13:00:01

标签: php laravel grpc

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

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

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

我已经从我的proto文件中生成了一个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框中运行。

我不知道该怎么办。我错过了依赖吗?我错过了安装的东西吗?

3 个答案:

答案 0 :(得分:1)

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

我尝试的事情:

  • 我在Homestead框中安装了grpc-beta(sudo pecl install 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
  • 更新了作曲家

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

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

答案 1 :(得分:1)

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

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

sudo pecl install grpc-1.15.0

答案 2 :(得分:0)

试试这个

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

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

如果这没有帮助。请在评论中写。让我们尝试别的东西