Windows 10下PHP使用gRPC缺失grpc_php_plugin的解决问询
解决Windows 10下PHP对接gRPC缺少grpc_php_plugin的问题
我之前在Windows环境用PHP 7.x对接gRPC时也碰到过一模一样的困境——官方文档几乎全是Unix环境的指引,Windows版的grpc_php_plugin确实没直接提供下载。结合我踩过的坑,给你分享几个可行的解决方案:
方案一:从源码编译grpc_php_plugin(适合愿意动手折腾的同学)
这是最靠谱的官方途径,就是步骤稍多:
- 先准备编译工具:安装CMake(3.13及以上版本)和Visual Studio 2019/2022(必须勾选C++开发工具集)
- 克隆gRPC源码仓库,记得拉取子模块(不然会缺依赖):
注意:这里的git clone --recurse-submodules -b v1.54.0 https://github.com/grpc/grpc.gitv1.54.0要和你安装的php_grpc.dll版本完全匹配,否则会有兼容性问题 - 打开CMake GUI,设置源码目录为克隆的grpc文件夹,构建目录选
grpc/build - 点击「Configure」,选择你的Visual Studio版本和x64平台,等待配置完成
- 在CMake的选项列表里找到
gRPC_BUILD_GRPC_PHP_PLUGIN,勾选这个选项 - 点击「Generate」,然后打开生成的Visual Studio解决方案,找到
grpc_php_plugin项目,右键选择「生成」(选Release模式) - 编译完成后,在
grpc/build/Release目录下就能拿到grpc_php_plugin.exe了
方案二:找社区预编译版本(省心快捷)
不少开发者会分享自己编译好的Windows版插件:
- 去gRPC的GitHub Issues里搜关键词「windows grpc_php_plugin」,能找到很多用户分享的编译文件,记得选和你的PHP版本(NTS 64位)、gRPC版本匹配的资源
- 也可以去PECL的grpc扩展页面的讨论区看看,有时候用户会在那里分享编译好的插件
方案三:用WSL绕过Windows环境限制(最稳定的方案)
如果不想在Windows本地折腾,直接用WSL(Windows子系统)是最省心的:
- 启用WSL并安装Ubuntu/Debian发行版
- 按照官方的Unix快速入门教程操作:安装PHP、composer、protoc,编译或安装
grpc_php_plugin - 生成PHP代码后,直接把代码复制回Windows的PHP项目中使用——gRPC的PHP代码是跨平台的,完全不影响后续调用
最后补充个使用提示
拿到grpc_php_plugin.exe后,生成代码的命令格式要注意:
protoc --php_out=./your_output_dir --grpc_out=./your_output_dir --plugin=protoc-gen-grpc=./path/to/grpc_php_plugin.exe your_proto_file.proto
内容的提问来源于stack exchange,提问作者user743436




