Ubuntu 20.04 没有 php8.1-sqlite 的安装候选项

Ubuntu 20.04 没有 php8.1-sqlite 的安装候选项

显然,该软件包php8.1适用于 Ubuntu 22.04,但不适用于 20.04。 php7.4-sqlite但是,适用于 20.04。

具体来说,我想在 20.04 上的 PHP8.1 上使用 PDO 和 sqlite。我有哪些选择可以实现这一点?

我已经/etc/php/8.1/cli/php.ini为这项工作做好了准备。我找到了建造说明libsqlite3.so 这里。这样,我就可以编译库了。然后我发出:

sudo mv libsqlite3.so /usr/lib/php/20210902/sqlite3.so

但是当我运行的时候php -v,错误日志显示:

[29-Jul-2023 18:26:13 America/New_York] PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20210902/pdo_sqlite (/usr/lib/php/20210902/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/pdo_sqlite.so (/usr/lib/php/20210902/pdo_sqlite.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
[29-Jul-2023 18:26:13 America/New_York] PHP Warning:  PHP Startup: Invalid library (maybe not a PHP library) 'sqlite3' in Unknown on line 0

(这与之前的错误消息不同,之前的错误消息是:

[29-Jul-2023 18:24:29 America/New_York] PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20210902/pdo_sqlite (/usr/lib/php/20210902/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/pdo_sqlite.so (/usr/lib/php/20210902/pdo_sqlite.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
[29-Jul-2023 18:24:29 America/New_York] PHP Warning:  PHP Startup: Unable to load dynamic library 'sqlite3' (tried: /usr/lib/php/20210902/sqlite3 (/usr/lib/php/20210902/sqlite3: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/sqlite3.so (/usr/lib/php/20210902/sqlite3.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

(是的,我明白即使这样做有效,也可能无法解决 PDO 问题。)所以我不确定如何在 Ubuntu 20.04 上为 PHP8.1 获取此功能。是否有其他软件包,或者可能是非标准来源,我可以从中获得有效的 PDO + SQLITE3(或至少是 PHP + SQLITE3)安装?在这种情况下,使用适当的关键字进行网络搜索没有帮助(除了前面提到的库编译)。或者也许编译选项仍然有效,但缺少步骤?

编辑

这是 sqlite3 库编译命令:

gcc \
    -Wl,-soname,libsqlite3.so.0 \
    -DSQLITE_ENABLE_COLUMN_METADATA \
    -DSQLITE_ENABLE_DBSTAT_VTAB \
    -DSQLITE_ENABLE_FTS3 \
    -DSQLITE_ENABLE_FTS3_PARENTHESIS \
    -DSQLITE_ENABLE_FTS3_TOKENIZER \
    -DSQLITE_ENABLE_FTS4 \
    -DSQLITE_ENABLE_FTS5 \
    -DSQLITE_ENABLE_JSON1 \
    -DSQLITE_ENABLE_LOAD_EXTENSION \
    -DSQLITE_ENABLE_PREUPDATE_HOOK \
    -DSQLITE_ENABLE_RTREE \
    -DSQLITE_ENABLE_SESSION \
    -DSQLITE_ENABLE_STMTVTAB \
    -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION \
    -DSQLITE_ENABLE_UNLOCK_NOTIFY \
    -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT \
    -DSQLITE_HAVE_ISNAN \
    -DSQLITE_LIKE_DOESNT_MATCH_BLOBS \
    -DSQLITE_MAX_SCHEMA_RETRY=25 \
    -DSQLITE_MAX_VARIABLE_NUMBER=250000 \
    -DSQLITE_OMIT_LOOKASIDE \
    -DSQLITE_SECURE_DELETE \
    -DSQLITE_SOUNDEX \
    -DSQLITE_THREADSAFE=1 \
    -DSQLITE_USE_URI \
    -shared \
    -o libsqlite3.so \
    -fPIC \
sqlite3.c

答案1

要在 Ubuntu 20.04 上安装php8.1,首先需要添加ppa:ondrej/php存储库,因为 PHP 8.1 软件包不在官方存储库中。

  • 添加 ondrej 的 repo:

    sudo add-apt-repository ppa:ondrej/php
    sudo apt update
    sudo apt upgrade
    
  • 安装 PHP 8.1:

    sudo apt install php8.1
    sudo apt install php8.1-cli
    sudo apt install php8.1-sqlite3
    
  • 告诉系统使用 8.1 作为phpCLI 命令:

    sudo update-alternatives --set php /usr/bin/php8.1
    

相关内容