根据 php 的 grpc 文档“ https://grpc.io/docs/quickstart/php.html ”将所有内容设置为使用 grpc 后,我尝试从编译一些 proto 文件中获得的类构建一个客户端对象使用 proto 编译器。
$rezept_nameservice_client = new Rezept_NameserviceClient('localhost:8082',
[ 'credentials' => Grpc\ChannelCredentials::createInsecure()]);
Run Code Online (Sandbox Code Playgroud)
当我尝试运行我的代码时,出现以下异常:
尝试从命名空间“App\Controller\Grpc”加载类“ChannelCredentials”。您是否忘记了另一个命名空间的“use”语句?
工作环境:
我已经尝试了不同的方法来解决我在这里发现的问题:
您需要在 php.ini 中安装grpc.so和扩展。protobuf.so我的问题是我安装在fpmphp.ini 中,但忘记了cliphp.ini,这就是我遇到问题的原因。
这个特定的类 ( Grpc\ChannelCredentials) 在任何 PHP 文件中都不存在。它来自 C 扩展。要安装这些扩展,请运行:
sudo pecl install grpc
sudo pecl install protobuf
Run Code Online (Sandbox Code Playgroud)
并将其添加到您的 php.ini
extension=grpc.so
extension=protobuf.so
Run Code Online (Sandbox Code Playgroud)
您可以通过执行以下操作找到 php.ini 位置:
php -i | grep php.ini
Run Code Online (Sandbox Code Playgroud)
请注意,如果您正在使用php-fpm:
使用php -i | grep php.ini将显示php.ini命令行php命令的 。提供页面服务的“php”php.ini通常在靠近 cli 的地方有自己的。例如:
/etc/php/7.2/cli/php.ini
/etc/php/7.2/fpm/php.ini
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1798 次 |
| 最近记录: |