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

I am trying to use grpc in a Laravel project.

This is a part of my composer.json file:

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

I have generated a php file from my proto file. It is placed in app/services/ and included in the composer.json autoload.files section. I have run composer install without issues.

I have created a route for testing. It has the following code:

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

But I receive the response Class 'Grpc\ChannelCredentials' not found. when I visit the route.

The Laravel app is running in a Homestead vagrant box.

I don't know how to proceed. Am I missing a dependency? Did I miss to install something?

I have solved the problem, but I am not sure which of the below steps was the solution.

Things I tried:

  • I installed grpc-beta in the Homestead box (sudo pecl install grpc-beta).
  • I updated from "grpc/grpc": "dev-release-0_13" to "grpc/grpc": "^0.15.0".
  • I added a repository to composer.json:

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/stanley-cheung/Protobuf-PHP"
        }
    ],
    
  • I restarted NGINX inside the Homestead box
  • I updated composer with composer self-update

I added this as an answer. Please advise if it would be better suited as an edit to the opening question or as a comment.

Also, it would be interesting to learn what the solution was.

I had the same issue but the above solution didn't work for me. My problem was that the grpc\grpc PHP package in composer and the grpc.so library were not the same version. I had 1.15 of the PHP package and 1.16 of the library.

You can install specific versions of the library with the following command:

sudo pecl install grpc-1.15.0

Try this

  • composer update
  • Replace vat_service\VatServiceClient to \vat_service\VatServiceClient

If not help, read here https://github.com/grpc/grpc/tree/release-0_14/examples/php

If this does not help.Write in the comments.Let us try to something else