PHP配置grpc
admin
2023-02-11 23:00:08
0

//开始之前我们说一下我遇到的坑,我自己安装了php7.3,系统自带了php7.0;我为pjp7.3安装扩展,但是操作的时候老是访问系统自带的php7.0,后来我把系统自带的php7.0的可执行文件(php phpize php-config)重命名了(保证全部使用我自己安装的,我宁愿出现可执行文件找不到也不能混用)。

PHP配置grpc

下载地址:https://phar.phpunit.de/
安装

wget https://phar.phpunit.de/phpunit-7.5.1.phar
chmod +x phpunit-7.5.1.phar
sudo cp phpunit-7.5.1.phar /usr/local/bin/phpunit
安装必要工具(很慢,耐住性子)
git clone  https://github.com/grpc/grpc.git
cd grpc
git submodule update --init
//git pull --recurse-submodules && git submodule update --init --recursive
make
sudo make install
# make install 会在 /usr/local/bin 目录下生成以下文件
#grpc_cpp_plugin  
#grpc_csharp_plugin  
#grpc_node_plugin  
#grpc_objective_c_plugin  
#grpc_php_plugin  
#grpc_python_plugin  
#grpc_ruby_plugin
#protobuf文件生成各种语言的插件
下载protoc工具

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

wget https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip
unzip /protoc-3.6.1-linux-x86_64
sudo cp bin/protoc /usr/local/bin
protoc --version
安装grpc扩展
wget http://pecl.php.net/get/grpc-1.17.0RC3.tgz
tar zxvf grpc-1.17.0RC3.tgz
cd grpc-1.17.0RC3
phpize
./configure --with-php-config=/usr/local/php/bin/php-config 
make 
sudo make install 
sudo vim /usr/local/php/etc/php.ini //添加extension=grpc
php -m //查看扩展是否安装成功
安装protobuf扩展 (成功的)
wget https://github.com/allegro/php-protobuf/archive/master.zip
unzip master.zip
cd php-protobuf-master
sudo apt-get install php-dev(安装依赖)
phpize
./configure --with-php-config=/usr/local/php/bin/php-config 
make &&sudo make install
//然后在php.ini里面加一下extension = "protobuf.so",再重启php与nginx即可。
composer安装
cd /path/to/you/../php-protobuf-master (存放php-protobuf-master的文件夹)
curl -s http://getcomposer.org/installer | php
php composer.phar install

https://blog.csdn.net/u011957758/article/details/52455231

编译php客户端
//源码:https://github.com/grpc/grpc
//我们以grpc给的php例子-helloworld为例
cd  grpc/examples/python/helloworld
python greeter_server.py //常驻服务
python greeter_client.py //打印Greeter client received: Hello, you!说明服务正常

//这里测试php服务端
cd  grpc/examples/php

//下载php client需要的vendor目录
curl -s http://getcomposer.org/installer | php
php composer.phar install

//将实例中的helloworld.proto拷贝到当前目录
cp grpc/examples/protos/helloworld.proto .

//这是编译proto文件的指令  生成GPBMetadata  Helloworld目录
protoc --proto_path=./ --php_out=./ --grpc_out=./ --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin ./helloworld.proto

//其实你可以不用拷贝helloworld.proto ,直接使用绝对路径也行,我是为了看着直观,
//实际项目中proto文件是单独管理的一套代码,大家引用他而已。

//此时就可以运行客户端了
php greeter_client.php //打印Hello, world!即为成功,服务使用python的。
//到这里说明我们的php已经搭建完grpc的配置了,就可以编写php grpc客户端了。

--备注
//sudo apt-get install libc-ares-dev


安装protobuf扩展 (失败)
wget http://pecl.php.net/get/protobuf-3.6.1.tgz
tar zxvf protobuf-3.6.1.tgz
cd protobuf-3.6.1
phpize
./configure --with-php-config=/usr/local/php/bin/php-config 
make 
sudo make install 
sudo vim /usr/local/php/etc/php.ini //添加extension=protobuf
php -m //查看扩展是否安装成功

安装probuf扩展
php -m
Segmentation fault (core dumped)
https://my.oschina.net/laixhe/blog/1476644

下面是别的blog推荐的方法:我试了很难成功。。。
$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc
$ cd grpc
$ git pull --recurse-submodules && git submodule update --init --recursive
$ make
$ sudo make install

# make install 会在 /usr/local/bin 目录下生成以下文件
#grpc_cpp_plugin  
#grpc_csharp_plugin  
#grpc_node_plugin  
#grpc_objective_c_plugin  
#grpc_php_plugin  
#grpc_python_plugin  
#grpc_ruby_plugin
#protobuf文件生成各种语言的插件

#protobuf 编译模块安装 protoc
$ git clone  https://github.com/google/protobuf.git
$ cd protobuf
$ ./configure
$ sudo make
$ sudo make install 
#会生成 /usr/local/bin/protoc 可执行文件

#安装gRPC PHP拓展
#方法一
$ cd grpc/src/php/ext/grpc
$ phpize
$ ./configure
$ make
$ sudo make install
#别忘记在php.ini 文件中加入 extension_dir = "$PHP_PATH/lib/php/extensions/debug-zts-20131226/"     extension = grpc.so

#方法2
$ sudo pecl install grpc
#别忘记在php.ini 文件中加入 extension_dir = "$PHP_PATH/lib/php/extensions/debug-zts-20131226/"     extension = grpc.so

#安装protobuf 依赖按住
#方法1 C依赖模块
$ pecl install protobuf

#方法2 PHP 依赖模块 需要安装 composer
$ composer require google/protobuf

#安装依赖包
$ composer require grpc/grpc

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...