PHP编译报“No package 'sqlite3' found”是因缺失开发库和pkg-config支持,需安装libsqlite3-dev(Ubuntu)或sqlite-devel(CentOS)、pkg-config工具,并验证pkg-config --modversion sqlite3输出版本号,最后在php.ini中启用extension=sqlite3并重启服务。

PHP 编译失败,卡在 No package 'sqlite3' found 或类似报错?不是 PHP 本身有问题,是系统缺开发头文件和 pkg-config 支持——补全这四类依赖,99% 的 configure 失败都能解决。
为什么 configure 总提示找不到 sqlite3、libxml2、openssl?
PHP 源码编译时的 configure 脚本不直接查二进制程序,而是靠 pkg-config 查开发库的元信息(比如头文件位置、链接参数)。没装 -dev 包,就只有运行时库,没有 .pc 文件,pkg-config --modversion xxx 就会失败,configure 直接报 “No package ‘xxx’ found”。
-
sqlite3运行命令存在 ≠libsqlite3-dev已安装 -
openssl命令可用 ≠libssl-dev存在 -
pkg-config本身必须先装,否则所有依赖检测都跳过
Ubuntu/Debian 下必须装的四个包组
按实际编译需求排序,不是可选,是硬依赖:
-
sudo apt update && sudo apt install -y pkg-config—— 所有configure依赖检测的基础,不装它,后续全白搭 -
sudo apt install -y libsqlite3-dev—— PHP 默认启用sqlite3扩展,没这个就崩 -
sudo apt install -y libxml2-dev libssl-dev libcurl4-openssl-dev——libxml2(DOM/SimpleXML)、openssl(HTTPS/curl)、curl(--with-curl)三者常一起触发缺失 -
sudo apt install -y autoconf automake bison re2c libtool—— 构建工具链,尤其re2c缺失会导致make阶段报 “re2c not found”
pkg-config --modversion xxx 测什么、怎么测
这是验证依赖是否真到位的唯一可靠方式。别只看 which sqlite3 或 dpkg -l | grep sqlite,要测 .pc 文件是否存在且可读:
立即学习“PHP免费学习笔记(深入)”;
-
pkg-config --modversion sqlite3→ 应输出类似3.31.1 -
pkg-config --modversion openssl→ 输出版本号,不是 “Package openssl was not found” -
pkg-config --modversion libxml-2.0→ 注意是libxml-2.0,不是libxml2 - 任何一条失败,说明对应
-dev包没装对,或pkg-config没刷新缓存(重装后一般自动更新,无需手动export PKG_CONFIG_PATH)
CentOS/RHEL 系统对应包名差异
包管理器不同,但逻辑一致:运行库 + 开发头文件 + pkg-config 支持。别照搬 Ubuntu 命令:
yum install -y pkgconfig sqlite-devel libxml2-devel openssl-devel libcurl-develyum install -y autoconf automake bison re2c libtool- 注意:
sqlite-devel对应 Ubuntu 的libsqlite3-dev,pkgconfig是 CentOS 的包名(不是pkg-config) - RHEL 8+ 用
dnf替代yum,但包名基本兼容
真正卡住的往往不是 PHP 版本或参数,而是某一个 -dev 包漏装,或者 pkg-config 没提前装。每次 configure 报 “No package ‘xxx’ found”,就执行对应 pkg-config --modversion xxx,再反查该包在当前系统的正确 -dev 名称——这个闭环比盲目重装 PHP 高效得多。



















