PHP 尝试连接 SQLite3 时返回 PDOException 'could not find driver'
PHP returning PDOException 'could not find driver' when trying to connect do SQLite3
我正在尝试使用 PDO 连接 SQLite 数据库,但出现此错误:
Uncaught exception 'PDOException' with message 'could not find driver'
在我的代码中:
$db = new PDO('sqlite:remedios.sqlite');
此外,命令 PDO::getAvailableDrivers()
仅列出 mysql。
我正在使用 Ubuntu 14.04
但问题是我已经安装了pdo_sqlite(安装了apt-get sqlite3 php5-sqlite
)。
我也查了一下:
- 我的 phpinfo() 显示 sqlite3(phpinfo 在这里:PHPInfo)
- 我在 /etc/php5/apache2/conf.d/20-pdo_sqlite.ini 的 PHP 配置文件中有
extension=pdo_sqlite.so
(phpinfo 在 "Additional .ini files parsed" 中列出了这个文件)
- 我在文件夹
/usr/lib/php5/20121212
中有 pdo_sqlite.so
- 已经尝试重新安装sqlite3,php5,php5-sqlite
编辑
配置文件如下:
20-pdo_sqlite.ini
; configuration for php SQLite module
; priority=20
extension=pdo_sqlite.so
20-sqlite3.ini
; configuration for php SQLite module
; priority=20
extension=sqlite3.so
编辑2
在 apache 上发现这个错误 error.log
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/pdo_sqlite.so' - /usr/lib/php5/20121212/pdo_sqlite.so: undefined symbol: sqlite3_column_table_name in Unknown on line 0
[Fri Nov 13 00:03:42.704671 2015] [mpm_prefork:notice] [pid 1938] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.14 OpenSSL/1.0.1f configured -- resuming normal operations
[Fri Nov 13 00:03:42.704702 2015] [core:notice] [pid 1938] AH00094: Command line: '/usr/sbin/apache2'
您缺少 SQLite 客户端库,我认为软件包是 Ubuntu:
上的 libsqlite3-0
apt-get install libsqlite3-0
之后重新启动 Apache。
更新 - 我们在 ldconfig -p | grep sqlite
的帮助下在聊天中解决了这个问题。它在 /usr/local/lib 中发现 libsqlite3 的陈旧安装与 Apache 使用的安装冲突。删除冲突的安装,并重新安装 sqlite3 包解决了问题。
输入:
sudo apt-get install php5-sqlite
我正在尝试使用 PDO 连接 SQLite 数据库,但出现此错误:
Uncaught exception 'PDOException' with message 'could not find driver'
在我的代码中:
$db = new PDO('sqlite:remedios.sqlite');
此外,命令 PDO::getAvailableDrivers()
仅列出 mysql。
我正在使用 Ubuntu 14.04
但问题是我已经安装了pdo_sqlite(安装了apt-get sqlite3 php5-sqlite
)。
我也查了一下:
- 我的 phpinfo() 显示 sqlite3(phpinfo 在这里:PHPInfo)
- 我在 /etc/php5/apache2/conf.d/20-pdo_sqlite.ini 的 PHP 配置文件中有
extension=pdo_sqlite.so
(phpinfo 在 "Additional .ini files parsed" 中列出了这个文件) - 我在文件夹
/usr/lib/php5/20121212
中有 pdo_sqlite.so
- 已经尝试重新安装sqlite3,php5,php5-sqlite
编辑
配置文件如下:
20-pdo_sqlite.ini
; configuration for php SQLite module
; priority=20
extension=pdo_sqlite.so
20-sqlite3.ini
; configuration for php SQLite module
; priority=20
extension=sqlite3.so
编辑2
在 apache 上发现这个错误 error.log
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/pdo_sqlite.so' - /usr/lib/php5/20121212/pdo_sqlite.so: undefined symbol: sqlite3_column_table_name in Unknown on line 0
[Fri Nov 13 00:03:42.704671 2015] [mpm_prefork:notice] [pid 1938] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.14 OpenSSL/1.0.1f configured -- resuming normal operations
[Fri Nov 13 00:03:42.704702 2015] [core:notice] [pid 1938] AH00094: Command line: '/usr/sbin/apache2'
您缺少 SQLite 客户端库,我认为软件包是 Ubuntu:
上的 libsqlite3-0apt-get install libsqlite3-0
之后重新启动 Apache。
更新 - 我们在 ldconfig -p | grep sqlite
的帮助下在聊天中解决了这个问题。它在 /usr/local/lib 中发现 libsqlite3 的陈旧安装与 Apache 使用的安装冲突。删除冲突的安装,并重新安装 sqlite3 包解决了问题。
输入:
sudo apt-get install php5-sqlite