Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法加载";pdo_sqlite“;_Php_Sqlite_Pdo - Fatal编程技术网

Php 无法加载";pdo_sqlite“;

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

我在一个需要与SQLite数据库交互的网站上工作。这是我第一个使用PHP的项目,我遇到了一些问题。到目前为止,我已经:

config.php:

。。。
$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
    php.ini
    文件(在/etc/php/7.2/cli中)中取消对这些行的注释:
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
文件中取消了几行注释。简单的评论他们回来修复了这个问题