PHP拓展是扩展PHP核心功能的重要组件,当官方提供的预编译包无法满足需求时,源码编译安装是最常用的方式,这种方式可以自定义编译参数,适配不同的运行环境。

一、源码编译安装PHP拓展的前置软件包
在进行源码编译安装PHP拓展之前,需要先确保系统中已经安装了以下基础软件包,否则编译过程会直接报错:
- PHP开发包:包含phpize、php-config等核心编译工具,不同系统的安装命令不同,比如Ubuntu系统可以通过
apt-get install php-dev安装,CentOS系统可以通过yum install php-devel安装。 - 编译工具链:包含gcc、make、autoconf等编译所需的基础工具,Ubuntu系统安装命令为
apt-get install build-essential,CentOS系统安装命令为yum groupinstall "Development Tools"。 - 拓展对应依赖库:如果要安装的拓展依赖第三方库,比如安装gd拓展需要libpng、libjpeg等库,需要提前安装对应的开发包,否则编译时会提示依赖缺失。
二、源码编译安装PHP拓展的完整步骤
1. 获取拓展源码
可以通过PHP官方扩展库下载对应版本的拓展源码,也可以通过pecl命令直接获取,比如获取redis拓展的源码:
# 使用pecl下载redis拓展源码 pecl download redis # 解压下载的压缩包 tar -zxvf redis-5.3.7.tgz # 进入解压后的目录 cd redis-5.3.7
2. 生成编译配置文件
使用phpize命令生成configure配置文件,这个命令会根据当前PHP的环境生成适配的编译配置:
# 执行phpize生成配置脚本 phpize # 如果phpize不在默认路径,可以指定php-config的路径 /usr/local/php/bin/phpize
3. 配置编译参数
执行configure命令配置编译参数,可以通过--with-php-config指定php-config的路径,避免编译后拓展安装到错误的PHP版本目录中:
# 配置编译参数,指定php-config路径 ./configure --with-php-config=/usr/local/php/bin/php-config # 如果拓展有额外依赖,可以添加对应参数,比如gd拓展指定png库路径 # ./configure --with-php-config=/usr/local/php/bin/php-config --with-png-dir=/usr/local/libpng
4. 编译并安装
配置完成后执行make和make install命令完成编译和安装,make install会把编译好的拓展文件复制到PHP的拓展目录中:
# 执行编译 make # 执行安装 make install
5. 启用拓展
安装完成后需要修改php.ini配置文件,添加拓展的加载项,然后重启PHP服务使配置生效:
# 编辑php.ini文件 vim /usr/local/php/etc/php.ini # 在文件末尾添加以下内容,拓展文件名根据实际的.so文件名称调整 extension=redis.so # 重启php-fpm服务 systemctl restart php-fpm
三、验证拓展是否安装成功
可以通过php -m命令查看已安装的拓展列表,确认目标拓展是否在列表中:
# 查看PHP已安装的拓展 php -m | grep redis
如果输出redis则表示拓展已经成功安装并启用,也可以创建phpinfo文件在浏览器中查看拓展的详细信息。
四、常见问题排查
- 如果执行phpize提示命令不存在,说明没有安装PHP开发包,需要先安装对应版本的php-devel或者php-dev包。
- 如果make阶段报错提示依赖缺失,需要根据报错信息安装对应的依赖库开发包,再重新执行configure和编译步骤。
- 如果安装后php -m看不到拓展,需要检查php.ini的路径是否正确,以及extension配置的文件名是否和实际生成的.so文件名一致。