我想在PHP中使用最新版本的sqlite(本文中为3.49.0)。
我使用的是docker,对于最新的docker镜像cli版本(php:8.2-cli),sqlite3显示了以下版本:
$ docker compose run --rm php php -r "echo SQLite3::version()['versionString'] . PHP_EOL;"
3.40.1
在我通过以下方式手动安装最新版本的sqlite3之后
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-*
我可以看到sqlite3是最新版本
$ docker compose run --rm php sqlite3 --version
3.49.0 2025-02-06
但PDO版本仍然是旧版本:
$docker compose run--rm php php-r“echo SQLite3::version()['versionString'].php_EOL;”
3.40.1
我的问题是,如何更新PDO以使用最新的sqlite3版本?
---用答案编辑---
带有自定义PDO的Dockerfile:
FROM php:8.2-cli
RUN apt-get update && apt-get install -y \
wget \
build-essential \
libxml2-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
RUN curl -L https://www.sqlite.org/2025/sqlite-autoconf-3490000.tar.gz | tar xz && \
cd sqlite-autoconf-3490000 && \
./configure && \
make && make install && \
cd .. && rm -rf sqlite-*
RUN docker-php-ext-disable pdo_sqlite
RUN docker-php-source extract \
&& cd /usr/src/php \
&& ./configure \
--with-pdo-sqlite=/usr/local \
&& make -j$(nproc) \
&& make install \
&& docker-php-source delete
RUN docker-php-ext-configure pdo_sqlite --with-pdo-sqlite=/usr/local \
&& docker-php-ext-install pdo_sqlite