我正在尝试在装有 PHP 7.4 的 Ubuntu 20.04 上安装并运行 sqlite3 的 PDO,但我不知道我做错了什么。我安装了 sqlite3 和 php-common,并在 php.ini 中取消注释了以下几行:
extension=pdo_sqlite
extension=sqlite3
当运行 php 时,我收到以下结果:
php -i | grep sqlite
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20190902/pdo_sqlite (/usr/lib/php/20190902/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_sqlite.so (/usr/lib/php/20190902/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0
/etc/php/7.4/cli/conf.d/20-pdo_sqlite.ini,
/etc/php/7.4/cli/conf.d/20-sqlite3.ini,
sqlite3
sqlite3.defensive => 1 => 1
sqlite3.extension_dir => no value => no value
这对我来说很奇怪,因为文件/usr/lib/php/20190902/pdo_sqlite.so存在。我还测试了 PHP7.3 和 PHP7.2,结果相同。使用以下命令在不同版本的 PHP 之间切换:
update-alternatives --config php
答案1
请为您的 php 版本安装 sqlite,对于 php7.4,请按照以下命令操作
sudo apt 安装 php7.4-sqlite3
答案2
升级到 Ubuntu 20.04 后我也遇到了同样的问题,并通过以下方式解决:
- 注释掉 php.ini 中的两个扩展
- 安装 php-sqlite3
我认为取消注释 php.ini 中的扩展行会直接导致扩展加载两次,从而引起此问题。