前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP - php7扩展安装的完全攻略 swoole、yaf、grpc

PHP - php7扩展安装的完全攻略 swoole、yaf、grpc

原创
作者头像
stark张宇
发布2023-02-07 14:30:02
1.1K0
发布2023-02-07 14:30:02
举报
文章被收录于专栏:stark张宇

概述

这篇是php7源码系统攻略的第三篇,是对之前的知识和补充,踩了很多坑,鏖战了数天才完全通关,下面带你安装常用的 redis 、yaf 、swoole 、 扩展,以及trie_filter、xdiffgrpc 、protobuf

php的扩展可分为3类,原生自带、pecl官网、和老旧的疑难杂症包。

原生自带

比如sockets 、pdo-mysql 、mysqli这种扩展属于原生自带,再编译的时候非常方便,如果你拿不定主意,可以使用./configure --help | grep sockets 命令去寻求帮助,需要主意的是,opcache已经集成在php7+的版本里了。

代码语言:txt
复制
#--with-fpm-user=USER
#--with-fpm-group=GRP
./configure --prefix=/usr/local/php7 \
 --with-php-config=/usr/local/php7/bin/php-config \
 --enable-fpm  \
 --enable-debug \
 --enable-zip \
 --enable-sockets \
 --with-pdo-mysql \
 --with-mysqli \
 --with-pear \
 --with-curl \
 --with-openssl && make && make install

生产环境要指定管理组和用户权限,--prefix指定的是php7的安装目录,--with-php-config 这个参数指定的目录特别关键,是后期安装扩展的灵魂。

pecl官网

去pecl官网,下载指定版本的扩展,使用命令wget https://pecl.php.net/get/yaf-3.0.7.tgz,太老旧的版本可能已经下线了,最好去官网去查询一下。

下面我以swoole-4.2.11为例子,来演示一下第二类的扩展,redis、MongoDB、yaf都是同样的道理。

1.下载安装包,解压
代码语言:txt
复制
wget https://pecl.php.net/get/swoole-4.2.11.tgz && \
tar zxf swoole-4.2.11.tgz

这里需要主意,一定要切换到解压的目录,指定命令phpize

2.下载安装包,解压

安装时--with-php-config这个参数要指定给你安装php时的目录这个是不能错的,不然编译的时候会找不到对应的目录。

代码语言:txt
复制
./configure --with-php-config=/usr/local/php7/bin/php-config
3.编译、修改配置文件

编译

make && make install

修改配置文件

代码语言:txt
复制
echo 'swoole=yaf.so' >> /usr/local/php7/lib/php.ini

检查是否安装成功,如果没有报错,其实就已经成功了。

代码语言:txt
复制
php -m | grep swoole 
php-fpm -m | grep swoole

trie_filter 和 xdiff

有一种扩展对系统有依赖,安装时依赖于系统中的包,稍微有些棘手,坑居多,再这个包上要超级小心翼翼的安装。

trie_filter

trie_filter依赖于libdatrie,所以要先安装好libdatrie,才可以行动起来,找了很多教程都不太系统,安装过程如下 libdatrie-0.2.4 下载地址

编译安装,要记住--prefix这个参数指定的安装目录,下面安装trie_filter需要用到。

代码语言:txt
复制
./configure --prefix=/usr/local/libdatrie &&  \
make && make install

trie_filter找了好几个地方,后来在github上找到的,十分不容易,你可以点击下载 下载trie_filter

代码语言:txt
复制
phpize && \
./configure --with-php-config=/usr/local/php7/bin/php-config  \ 
--with-trie_filter=/usr/local/libdatrie && \
make && make install 

安装成功的关键在于--with-trie_filter这个参数路径要指定在上一个地方,安装成功后别忘了添加配置文件,查看是否成功。

xdiff

libxdiff-0.23 依赖包下载地址,解压后直接安装,操作命令如下。

代码语言:txt
复制
tar zxf libxdiff-0.23.tar.gz && \
cd libxdiff-0.23 && \
./configure && make && make install

xdiff扩展和依赖下载安装,操作命令如下。

代码语言:txt
复制
wget https://pecl.php.net/get/xdiff-2.0.1.tgz && \
tar zxf xdiff-2.0.1.tgz &&  cd xdiff-2.0.1 && \
phpize && ./configure --with-php-config=${PHP_COMPILE_PATH} && \
make && make install && echo 'extension=xdiff.so' >> ${PHP_INI_PATH}

grpc 和 protobuf

我安装的grpc和protobuf版本如下,遇到了一个gcc版本低不能编译的问题,linux centos7 的gcc默认版本是4.8.5,安装时编译不了。

代码语言:txt
复制
# | grpc-1.50.0
# | protobuf-3.21.9

升级gcc 7.3后成功编译了grpc和protobuf,编译方法和上面的就相同了,不在赘述了,升级gcc的命令如下:

代码语言:txt
复制
# 安装grpc 需要升级gcc 7.3
yum -y install centos-release-scl 
yum -y install devtoolset-7-gcc \
devtoolset-7-gcc-c++ devtoolset-7-binutils

scl enable devtoolset-7 bash

最后,别忘了修改系统环境变量 和 查看安装情况

代码语言:txt
复制
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile #修改环境变量

gcc -v

最后,安装完成了。

代码语言:txt
复制
[root@100b528a8aa7 src]# php -m | grep grpc
grpc
[root@100b528a8aa7 src]# php -m | grep swoole
swoole
[root@100b528a8aa7 src]# php -m | grep trie_filter
trie_filter
[root@100b528a8aa7 src]# php -m | grep xdiff
xdiff

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
    • 原生自带
      • pecl官网
        • 1.下载安装包,解压
        • 2.下载安装包,解压
        • 3.编译、修改配置文件
      • trie_filter 和 xdiff
        • trie_filter
        • xdiff
      • grpc 和 protobuf
      相关产品与服务
      云数据库 MongoDB
      腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档