Ubuntu22.04源码编译PHP8.0.19提示未找到sqlite3包如何解决
问题说明
- 运行环境:Ubuntu 22.04 LTS
- 操作目标:源码编译安装PHP 8.0.19
- 故障现象:
- 执行
./configure时抛出依赖错误,提示找不到版本高于3.7.4的sqlite3 - 执行
sqlite3 --version确认系统已安装3.37.2版本sqlite3,满足版本要求 - 尝试添加
--without-sqlite3参数重新配置、通过apt重装sqlite3、自行编译高版本sqlite3均无法解决问题
- 执行
报错核心信息如下:
checking for sqlite3 > 3.7.4... no configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package 'sqlite3' found
故障原因
- apt源里的
sqlite3包只包含命令行客户端程序,编译软件依赖的C头文件、pkg-config配置文件属于libsqlite3-dev开发包,默认不会随命令行工具安装,所以编译检测脚本找不到对应的依赖配置。 --without-sqlite3参数仅能禁用PHP原生的sqlite3扩展,PHP默认开启的pdo_sqlite扩展同样依赖sqlite3库,只禁用前者依然会触发依赖检测报错。- 自行编译sqlite3后依然报错,是因为编译安装的路径不在系统默认的库/配置文件搜索路径下,也没有手动指定搜索路径,检测脚本仍然找不到依赖。
解决方法
三种方案选其一即可,优先选第一种。
方案1:安装系统源的sqlite3开发包(最推荐)
直接执行命令安装缺失的开发依赖:
sudo apt update sudo apt install -y libsqlite3-dev
安装完成后清理之前的配置缓存,重新执行配置命令即可:
rm -f config.cache ./configure # 追加你原本需要的其他编译参数
该方案使用官方源适配的版本,和系统兼容性最好,无版本冲突风险。
方案2:彻底禁用所有sqlite相关扩展
如果完全不需要使用sqlite相关能力,配置时同时禁用两个sqlite相关扩展即可跳过依赖检测:
./configure --without-sqlite3 --without-pdo-sqlite # 追加你原本需要的其他编译参数
注意两个参数必须同时添加,缺一个都会触发对应扩展的依赖检测。
方案3:适配自行编译的sqlite3版本
如果必须使用自己编译的高版本sqlite3,需要在配置PHP前先指定环境变量,告诉编译脚本sqlite3的安装位置。
假设你自行编译的sqlite3安装在/usr/local/sqlite3路径下,先执行以下命令配置环境变量:
export PKG_CONFIG_PATH=/usr/local/sqlite3/lib/pkgconfig:$PKG_CONFIG_PATH export LD_LIBRARY_PATH=/usr/local/sqlite3/lib:$LD_LIBRARY_PATH
再执行PHP的configure命令即可,注意将路径替换为你实际的sqlite3安装路径。
内容的提问来源于stack exchange,提问作者Black
相关产品推荐
相关产品推荐

