ubuntu16.04 php 使用 protocol buffer

Protocol Buffer(PB) 协议是 Google 开发的一套开源协议,提供了一系列语言支持,包括 c#、c++、java 等,可以到https://github.com/google/protobuf访问源码


最近由于项目需求,需要在 linux 下使用 PHP PB,经过一段时间的研究,基本能正常使用,希望对后面需要在 linux 上使用 PB 的小伙伴提供一些参考,由于第一次在 linux 上使用 PHP 及 PB,有不足之处望指出,谢谢。

在 linux 上使用 PHP PB,根据官网提示,需要安装 PB 编译器及 PB 运行库。


一、安装 PB 编译器

1、根据官网链接下载 PHP PB 编译器(有兴趣可以下载 PB 源代码自己编译,当然为了省事我们还是下载官网已经编译好的对应语言的编译器就好),当前最新版为 v3.4.0,我们找到对应语言的下载链接(由于我们在 linux 上使用,所以直接下载 .tar.gz 安装包)

注意:根据官网描述 Downloads 列表中仅 protoc-版本号-平台.zip 包含已经编译好的 PB 编译器,下载时请注意。当然如果和我使用的版本一致,可以直接在本文末尾的下载链接中下载。

https://github.com/google/protobuf/releases

2、解压编译器(为了方便操作,我们把解压后的编译器拷贝到根目录下,后面使用时就不用输一长串路径)



二、安装 PB 运行库

1、由于初次在 linux 下使用 php,所以按照官网提供的 3 种方式均未能成功安装 pb 运行库

(1)使用第一种方式编译:pear --> pecl install ...,编译阶段出错


(2)使用第二种方式编译:pecl install protobuf-3.4.0,报错找不到该文件,尝试下载低版本时提示下载最新版 :((不知道有没有小伙伴安装成功过)


(3)使用第三种方式:composer,官网说在自己工程的 composer.json --> requird 字段增加 "google/protobuf",但我们安装目录下并未搜索到该 .json(是在安装之前修改?),但在官网源代码 php/ 目录下发现 composer.json,于是再次按照官网给的步骤继续安装,输入 composer require "google/protobuf",结果还是安装失败,错误和第二点类似。


2、根据第二种安装方式可以看出 linux 是去一个网站下载 pb 安装包,那我们能不能自己去下载来安装呢?打开 PECL 官网,搜索包,输入 protobuf 后我们就找到了 protobuf 插件的主目录(打开),找到最新 3.4.0 版本,下载 .tgz 安装包,上传到 linux 系统

3、解压刚刚下载的 pb-3.4.0.tgz 后,我们可以看到以下内容


4、我们看到了熟悉的 config.m4,于是尝试使用常规方法安装:加载 php 插件


注意:这里为了方便使用,我们将 php 安装目录放在了 PHP_HOME 环境变量中

5、开始编译:./configure --with-php-config=php-config


6、开始安装:make && make install,看到以下提示,说明已经安装成功


7、查看安装目录下时候有生成的库文件,并将库文件写入 php.ini 中


7、至此,PB 编译器和 PB 运行库我们已经安装完成了,下面开始测试。


三、测试

1、使用 PB 编译器将 .proto 文件编译为 .php 文件:protoc --php_out=proto-php demo.proto(这里我们使用 PB 源代码中自带的 .proto 文件来测试)


注意:PB 编译器会生成两个目录,一个是 .proto 中指定的 packet 目录,另一个为 GPBMetadata 目录,我们需要将 GPBMetadata 目录下的文件拷贝到另一个目录中,否则在后面执行时会找不到 GPBMetadata类

2、编写测试脚本:

3、执行


官网提供的三种安装方式如果有哪位小伙伴安装成功,还烦请告知安装方法,不胜感激。

现在 csdn 怎么不让上传 0 分的资源了。。。


Linux-64Linux-32Windows

相关文章

文章浏览阅读2.3k次,点赞4次,收藏22次。最近安装了CARLA预...
文章浏览阅读6.3k次,点赞5次,收藏15次。在清华镜像中下载U...
文章浏览阅读5k次。linux环境, python3.7.问题描述: 安装...
文章浏览阅读4.2k次,点赞4次,收藏17次。要安装这个 standa...
文章浏览阅读894次,点赞51次,收藏31次。在安卓使用vscode主...