编译 PHP 扩展前必须安装三类依赖:PHP 开发包(php-dev 或 php-devel)、构建工具(autoconf/automake/libtool)及扩展特有库(如 libhiredis-dev);phpize 用于生成匹配目标 PHP 版本的 configure 脚本,需确保其 PHP API 版本与 php -i 一致;configure 须指定 –with-php-config 和必要路径参数;.so 文件须放至 extension_dir 并在 php.ini 中正确启用,注意加载顺序与 ABI 兼容性。
源码编译 PHP 扩展前必须装哪些依赖
缺依赖是编译失败最常见原因,不是“找不到 phpize”就是“configure: error: not found”,本质是开发头文件和构建工具没到位。
以主流 Linux 发行版为例,核心要装三类:
-
php-dev(Debian/Ubuntu)或php-devel(CentOS/RHEL)——提供phpize、php-config和 PHP 内部头文件(如php.h),没它连第一步都走不了 -
autoconf、automake、libtool——PHP 扩展 configure 脚本由 autoconf 生成,缺它们会报autoreconf: command not found - 对应扩展的外部依赖,比如编译
redis扩展需libhiredis-dev(Ubuntu)或hiredis-devel(CentOS);编译gd需libpng-dev、libjpeg-dev等
phpize 是什么,为什么每次都要用它
phpize 不是编译器,而是为扩展生成 configure 脚本的“预处理器”。它读取当前 PHP 安装路径、ABI 版本、扩展目录位置,确保后续 ./configure 能对上号。
常见误区:用系统自带 PHP 的 phpize 去编译为另一个 PHP(比如自己编译的 PHP 7.4)写的扩展,结果 make install 后 php -m 看不见,或者启动时报 undefined symbol。解决方法只有一个:用目标 PHP 对应的 phpize,通常在 /path/to/php/bin/phpize。
立即学习“PHP免费学习笔记(深入)”;