前言
自己本地環境原本有個PHP7.1的版本,結果在裝grpc時一直提示沒有權限把grpc.so拷貝到PHP擴展目錄下,就重新裝了一次php
此次安裝涉及的有:
- PHP
- composer
- pecl
- grpc
- php的grpc擴展
- protobuf
- php的protoc插件
安裝
1.覆蓋原來的php
# 安裝PHP
brew intall php
# 優先使用新安裝的PHP7.2,即配置環境變量,這一步要注意自己的PHP目錄,以下是我的目錄
# 我的shell使用的是zsh,所以導入到~/.zshrc下,要注意自己的shell是什么,導入到自己使用的shell配置文件里
echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/php@7.2/sbin:$PATH"' >> ~/.zshrc
# 使用配置文件,使其生效
source ~/.zshrc
# 查看PHP的版本是否是自己安裝的
php -v
php-fpm -v
2.安裝grpc及其擴展
安裝grpc
brew install grpc
安裝PHP的grpc擴展
git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc
cd grpc
git submodule update --init
make
sudo make install
#這一步我本地報錯找不到autolocal,查后需要安裝automake,用brew install automake即可
cd grpc/src/php/ext/grpc
phpize
./configure
make
sudo make install
以上都OK的話,在phpinfo里應該可以看到grpc的信息了
3.安裝protobuf
pecl install protobuf
安裝成功后,phpinfo里會有protobuf的信息.
4.demo
下載example
$ # Clone the repository to get the example code:
$ git clone -b v1.24.0 https://github.com/grpc/grpc
$ # Build grpc_php_plugin to generate proto files if not build before
$ cd grpc && git submodule update --init && make grpc_php_plugin
$ # Navigate to the "hello, world" PHP example:
$ cd examples/php
$ ./greeter_proto_gen.sh
$ composer install
我本地跑的是go的grpc服務端,所以不安裝服務端了。demo里是用node做服務端。如下:
$ npm install
$ cd dynamic_codegen
$ node greeter_server.js
運行PHP的客戶端:
$ ./run_greeter_client.sh
沒問題的話,在服務端會顯示:
$ 2019/10/18 16:03:50 Received: world
