如何更新PDO以使用最新版本的SQLite3?
解决PHP Docker镜像中SQLite3扩展版本不更新的问题
问题核心:PHP的SQLite3扩展是编译时静态链接到系统SQLite库的,仅更新系统层面的sqlite3二进制文件不会影响PHP扩展使用的版本,必须重新编译PHP的SQLite3扩展,让它链接到新安装的SQLite库。
完整Dockerfile示例
FROM php:8.2-cli # 安装编译依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ php-dev \ && rm -rf /var/lib/apt/lists/* # 编译安装最新版SQLite3(3.49.0) RUN curl -L https://www.sqlite.org/2025/sqlite-autoconf-3490000.tar.gz | tar xz && \ cd sqlite-autoconf-3490000 && \ ./configure --prefix=/usr/local && \ make && make install && \ cd .. && rm -rf sqlite-* # 重新编译PHP的SQLite3和PDO_SQLite扩展,链接到新的SQLite库 RUN docker-php-ext-configure sqlite3 --with-sqlite3=/usr/local \ && docker-php-ext-install -j$(nproc) sqlite3 pdo_sqlite
验证结果
构建镜像后,运行以下命令验证PHP使用的SQLite版本:
docker compose run --rm php php -r "echo SQLite3::version()['versionString'] . PHP_EOL;"
此时应该输出:3.49.0
关键说明
docker-php-ext-configure sqlite3 --with-sqlite3=/usr/local:指定编译扩展时使用手动安装的新SQLite库docker-php-ext-install sqlite3 pdo_sqlite:重新编译并安装SQLite3及PDO_SQLite扩展,替换镜像中原有的旧版本-j$(nproc):利用主机全部CPU核心加速编译,可根据需要省略
内容的提问来源于stack exchange,提问作者Karlo
相关产品推荐
相关产品推荐

