1.安装protoc
(1) Linux Ubuntu
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.0/protobuf-all-3.12.0.tar.gz
tar -zxvf protobuf-all-3.12.0.tar.gz
sudo ./configure
sudo make && sudo make install
protoc --version
异常:
有些依赖没有安装, 大部分有提示:
// 例如:make => No targets specified and no makefile found. Stop.
sudo apt update
sudo apt install gcc
apt install gcc build-essential
// make install => no permission
sudo make install
// protoc --version => no such file or directory
重启(子系统的话,需要重启宿主机)
异常2:
error while loading shared libraries: libprotoc.so.25: cannot open shared object file: No such file or directory
执行 export LD_LIBRARY_PATH=/usr/local/lib
把/usr/local/lib 加到环境变量中 LD_LIBRARY_PATH
(2) Windows
下载地址:https://github.com/protocolbuffers/protobuf
下载windows版本,安装exe程序即可,在系统环境变量中加入路径后,所有地方皆可使用protoc 命令
2.安装php-protobuf扩展
下载解压 protobuf
cd ~
wget http://pecl.php.net/get/protobuf-3.12.2.tgz
tar xvf protobuf-3.12.2.tgz
cd protobuf-3.12.2
生成配置并编译安装(编译安装时间较长, 耐心等待)
phpize
./configure --with-php-config=/www/server/php/72/bin/php-config
make && make install
配置PHP扩展, 重启PHP服务, 清理下载文件
echo "extension = protobuf.so" >> /www/server/php/72/etc/php.ini
/etc/init.d/php-fpm-74 reload
php -m|grep -i protobuf
3.编译文件
# 这是一条执行命令
protoc
# PHP文件输出目录
--php_out=./php
# gRPC相关代码输出目录,建议一致。,冒号后面的就是输出目录,前面的命令不可以修改,改了就不会生成stub文件了。
--grpc_out=generate_server:php
# 这个插件是需要单独安装的
# 安装操作在gRPC文件中,[生成grpc_php_plugin]
--plugin=protoc-gen-grpc=/usr/local/grpc_php_plugin
# proto文件
users.proto
编译出来的文件中,必须包含Stub.php及Client.php,不然可能会有各种各样的问题