Php 无法加载";pdo_sqlite“;
我在一个需要与SQLite数据库交互的网站上工作。这是我第一个使用PHP的项目,我遇到了一些问题。到目前为止,我已经: config.php:Php 无法加载";pdo_sqlite“;,php,sqlite,pdo,Php,Sqlite,Pdo,我在一个需要与SQLite数据库交互的网站上工作。这是我第一个使用PHP的项目,我遇到了一些问题。到目前为止,我已经: config.php: 。。。 $connection=newsqliteconnection(); $connection->connect(); 在SQLiteConnection中,$connection->connect()完成了以下工作: 试试看{ $rootDir=$_服务器[“文档_根”]; $this->pdo=newpdo(“sqlite:.$rootDir
。。。
$connection=newsqliteconnection();
$connection->connect();
在SQLiteConnection中,$connection->connect()
完成了以下工作:
试试看{
$rootDir=$_服务器[“文档_根”];
$this->pdo=newpdo(“sqlite:.$rootDir.self::DATABASE_PATH);
$this->pdo->setAttribute(pdo::ATTR_ERRMODE,pdo::ERRMODE_异常);
}捕获(PDO$e){
在“$e->getLine()”行回显“Exception:”。“$e->getMessage()。”;
}
但是,每次运行config.php
时,都会出现以下错误:
异常:第22行“找不到驱动程序”
这是我初始化一个PDO
的行
我尝试了很多解决方案:
- 清除并重新安装
,php通用
,以及其他php-sqlite3
- 在my
文件(在/etc/php/7.2/cli中)中取消对这些行的注释:php.ini
extension=pdo_sqlite
扩展名=sqlite3
- 在同一
文件中取消注释和设置扩展目录:php.ini
sqlite3.extension\u dir=“ext”
- 重新启动apache2服务(
)sudo服务apache2重新启动
php-m
时,我确实得到了列表中的模块,但有一个警告:
$ php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20170718/pdo_sqlite (/usr/lib/php/20170718/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0
PHP Warning: Module 'sqlite3' already loaded in Unknown on line 0
[PHP Modules]
...
PDO
pdo_sqlite
...
sqlite3
...
但当我查看目录的内容时,这些文件似乎存在:
$ ls -al /usr/lib/php/20170718
total 6372
drwxr-xr-x 2 root root 4096 Mar 1 11:40 .
drwxr-xr-x 4 root root 4096 Mar 1 11:38 ..
...
-rw-r--r-- 1 root root 113048 Feb 11 15:55 pdo.so
-rw-r--r-- 1 root root 31096 Feb 11 15:55 pdo_sqlite.so
...
-rw-r--r-- 1 root root 52648 Feb 11 15:55 sqlite3.so
...
当我查看其父目录时,我看到:
$ ls -al /usr/lib/php/
total 40
drwxr-xr-x 4 root root 4096 Mar 1 11:38 .
drwxr-xr-x 144 root root 4096 Mar 1 11:38 ..
drwxr-xr-x 2 root root 4096 Mar 1 11:40 20170718
drwxr-xr-x 3 root root 4096 Mar 1 11:38 7.2
-rw-r--r-- 1 root root 4845 Jan 17 2018 php-helper
-rw-r--r-- 1 root root 9534 Jan 17 2018 php-maintscript-helper
-rwxr-xr-x 1 root root 2922 Jan 17 2018 sessionclean
这个问题可能是因为20170718
和7.2
都存在(我不确定两者的区别)?7.2
目录中没有任何。因此
文件。在重新启动我的计算机(以及我正在使用的IDE IntelliJ)时,我在运行config.php
文件时收到了另一个错误,我需要安装php cgi
我这样做了,并且在运行config.php
时不再收到异常。我想我已经解决了这个问题,只需要重新启动IDE即可应用它
第二个仍然存在的问题是警告:
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20170718/pdo_sqlite (/usr/lib/php/20170718/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0
PHP Warning: Module 'sqlite3' already loaded in Unknown on line 0
我用以下方法解决了这个问题:
这意味着有一个扩展=。。。或zend_扩展=。。。一个php配置文件(php.ini或其附近的另一个)中试图加载该扩展名的行
在早些时候试图找到解决方案时,我在php.ini
文件中取消了几行注释。简单的评论他们回来修复了这个问题