代码之家  ›  专栏  ›  技术社区  ›  Karlo

PHP Sqlite PDO最新版本

  •  0
  • Karlo  · 技术社区  · 2 月前

    我想在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
    
    1 回复  |  直到 2 月前
        1
  •  0
  •   hakre    2 月前

    我的问题是,如何更新PDO以使用最新的sqlite3版本?

    您必须更新PDO扩展,特别是 sqlite3 driver extension of PDO 还有更新的图书馆。

    PDO是核心的一部分,你可以在这里找到源代码: https://github.com/php/php-src/?tab=readme-ov-file#building-php-source-code

    在make之前的先决条件中已经提到了SQLite3。