需基于匹配版本的PHP源码和php-dev/php-devel环境,依次执行phpize、./configure、make生成.so文件,再复制到extension_dir并配置php.ini启用。

如果您需要将PHP扩展编译为共享库(.so文件),以便通过extension指令动态加载,则需基于PHP源码树和已安装的PHP开发环境执行特定构建流程。以下是完成该操作的具体步骤:
一、准备PHP源码与开发依赖
编译PHP扩展共享库必须使用与目标PHP运行环境版本一致的PHP源码,且系统需安装php-dev(或php-devel)包以提供phpize、php-config等构建工具。缺少任一组件将导致configure失败或生成不兼容的so文件。
1、确认当前PHP版本:php -v
2、下载对应版本的PHP完整源码包(非二进制包),解压至本地目录,例如/usr/src/php-8.2.12
立即学习“PHP免费学习笔记(深入)”;
3、安装开发依赖:Ubuntu/Debian系统执行apt install php-dev autoconf bison re2c pkg-config;CentOS/RHEL系统执行yum install php-devel autoconf bison re2c pkgconfig
二、进入扩展源码目录并运行phpize
phpize用于生成configure脚本,它读取扩展中的config.m4文件并初始化构建环境。此步骤必须在扩展源码根目录中执行,且要求phpize命令来自与目标PHP版本匹配的安装路径。
1、切换至扩展源码目录,例如cd /path/to/ext/redis
2、执行phpize,输出应包含“Building configure script”字样
3、若提示“command not found”,请使用全路径调用,如/usr/bin/phpize或查找对应PHP版本的phpize位置
三、配置编译参数并生成Makefile
configure脚本负责检测系统环境、头文件路径及依赖库是否存在,并生成适配当前平台的Makefile。必须显式指定php-config路径以确保链接正确的PHP API符号。
1、执行./configure --with-php-config=/usr/bin/php-config(路径需替换为实际php-config位置)
2、若扩展依赖外部库(如libcurl、openssl),需追加对应选项,例如--with-curl=/usr或--with-openssl=/usr
3、检查输出末尾是否出现“config.status: creating config.h”和“config.status: creating Makefile”,表示配置成功
四、编译并生成共享库文件
make命令依据Makefile调用gcc进行编译与链接,最终产出扩展的动态共享对象文件(.so)。此过程不安装文件,仅生成位于modules/子目录下的目标文件。
1、执行make,等待编译完成,无报错即视为成功
2、确认.so文件生成路径:ls modules/*.so,典型输出为modules/redis.so
3、可选验证符号表完整性:nm -D modules/redis.so | grep zend_extension,应返回若干PHP内核相关符号
五、安装共享库并启用扩展
将编译生成的.so文件复制到PHP扩展目录,并在php.ini中声明启用,是使扩展生效的最后两步。PHP运行时通过extension_dir定位so文件,再按extension指令加载。
1、查询扩展目录路径:php -i | grep extension_dir,记录输出值如/usr/lib/php/20220829
2、复制so文件:sudo cp modules/redis.so /usr/lib/php/20220829/
3、编辑php.ini,在末尾添加:extension=redis.so











