显然,该软件包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 作为
php
CLI 命令:sudo update-alternatives --set php /usr/bin/php8.1