php 安装 grpc 扩展

升级gcc

默认gcc的版本为4.8.5,grpc扩展需要支持c++14

查询对照的话gcc6.1就可以完全至此c++14 (转载至)如图:

踩过的坑,重新安装升级了gcc 6.5.0的版本,安装grpc还是提示如下

 

可能是安装升级的方式不对,大家可自行尝试。

后来用这个升级了gcc之后安装一次性成功  《Linux安装GCC+升级GCC流程详解》

升级gcc之后,就可以按照下方grpc官网的教程安装grpc的扩展

grpc/php

RELEASE_TAG_HERE 替换成自己需要的版本分支 grpc/tags

 

 

 当前选择的是 v1.50.1

git clone -b v1.50.1 https://github.com/grpc/grpc

默认git版本为1.8版本的比较不稳定,建议升级git版本,git clone成功率会比较高

clone过程中可能超时多尝试几次 如图:

cd grpc
# 如下命令根据grpc根目录的.gitmodules文件进行更新,有多个子模块执行过程中可能有多次失败,多尝试几次
# 执行
git submodule update --init

1 # 下载完成后执行
2 EXTRA_DEFINES=GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK make
3 grpc_root="$(pwd)"
4 cd src/php/ext/grpc
5 phpize
6 GRPC_LIB_SUBDIR=libs/opt ./configure --enable-grpc="${grpc_root}"  --with-php-config=/usr/local/php74/bin/php-config
7 make && make install

安装完成之后grpc.so会放在php的扩展目录下 /usr/local/php74/lib/php/extensions/no-debug-non-zts-20190902/ 

更新php.ini

1 vim /usr/local/php74/etc/php.ini
2 extension=grpc.so
3 # 保存重新启动php进程
4 systemctl restart php-fpm74

 

 php -m 查看安装的模块

 

 

macos中如提示如下:

PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so' (tried: /opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so (dlopen(/opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so, 0x0009): Library not loaded: libgrpc.dylib
  Referenced from: <4098739C-97E9-3A96-B8F8-8CCA65C7D7F9> /opt/homebrew/lib/php/pecl/20210902/grpc.so
  Reason: tried: 'libgrpc.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibgrpc.dylib' (no such file), 'libgrpc.dylib' (no such file), '/usr/local/lib/libgrpc.dylib' (no such file), '/usr/lib/libgrpc.dylib' (no such file, not in dyld cache), '/opt/homebrew/etc/php/8.1/conf.d/libgrpc.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/etc/php/8.1/conf.d/libgrpc.dylib' (no such file), '/opt/homebrew/etc/php/8.1/conf.d/libgrpc.dylib' (no such file), '/usr/local/lib/libgrpc.dylib' (no such file), '/usr/lib/libgrpc.dylib' (no such file, not in dyld cache)), /opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so (dlopen(/opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so' (no such file), '/opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so' (no such file))) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so' (tried: /opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so (dlopen(/opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so, 0x0009): Library not loaded: libgrpc.dylib
  Referenced from: <4098739C-97E9-3A96-B8F8-8CCA65C7D7F9> /opt/homebrew/lib/php/pecl/20210902/grpc.so
  Reason: tried: 'libgrpc.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibgrpc.dylib' (no such file), 'libgrpc.dylib' (no such file), '/usr/local/lib/libgrpc.dylib' (no such file), '/usr/lib/libgrpc.dylib' (no such file, not in dyld cache), '/opt/homebrew/etc/php/8.1/conf.d/libgrpc.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/etc/php/8.1/conf.d/libgrpc.dylib' (no such file), '/opt/homebrew/etc/php/8.1/conf.d/libgrpc.dylib' (no such file), '/usr/local/lib/libgrpc.dylib' (no such file), '/usr/lib/libgrpc.dylib' (no such file, not in dyld cache)), /opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so (dlopen(/opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so' (no such file), '/opt/homebrew/lib/php/pecl/20210902//opt/homebrew/Cellar/php@8.1/8.1.17/pecl/20210902/grpc.so.so' (no such file))) in Unknown on line 0

需要将grpc根目录把 php警告信息中的 libgpr.dylib、libgrpc.dylib 复制到 /usr/local/lib

# 当前是在grpc根目录
cp libs/opt/libgpr.dylib /usr/local/lib
cp libs/opt/libgrpc.dylib /usr/local/lib

 

 
posted @ 2022-11-24 14:52  php的自我修养  阅读(1147)  评论(0编辑  收藏  举报