AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 117610
Accepted
Roman
Roman
Asked: 2010-03-01 02:49:49 +0800 CST2010-03-01 02:49:49 +0800 CST 2010-03-01 02:49:49 +0800 CST

为什么在 /var/www/*.php 中找不到类“SQLiteDatabase”?

  • 772

我正在尝试使用 PHP 中的 sqlite。我有以下简单的代码:

<?php
$db = new SQLiteDatabase("test2.sdb");
unset($db);
?>

作为这段代码的结果(我在命令行“php test2.php”中执行),我得到:

Fatal error: Class 'SQLiteDatabase' not found in /var/www/test2.php on line 3

有谁知道我怎样才能让 PHP 能够使用 sqlite?

PS 在这里我发现“从 PHP 5.0 开始的标准 Linux PHP 编译默认启用 SQLite 支持”。我有“PHP 版本 => 5.2.6-2ubuntu4.6”。因此,除非“--disable-sqlite”,否则应该启用 sqlite。在我的例子中输出“phpinfo();” 根本不包含“sqlite”。

php sqlite
  • 9 9 个回答
  • 27096 Views

9 个回答

  • Voted
  1. trejder
    2013-05-17T05:02:23+08:002013-05-17T05:02:23+08:00

    ClassSQLiteDatabase是sqlite库中的一个对象,该支持在 PHP 5.4 中被删除,但在早期版本中可以禁用各种系统和配置,因为该库长期以来被标记为将被弃用。

    较新版本的 PHP 不再支持库php_sqlite.dll(Windows) 或(Linux),并分别替换为或。php_sqlite.sophp_sqlite3.dllphp_sqlite3.so

    你可以:

    1. 尝试在 Internet 的某个地方找到php_sqlite.dll( )。php_sqlite.so像这样或这样的链接可能对你有帮助。但是,您必须仔细地将旧的 SQLite 库文件与您的 PHP 平台(x64或x86)、构建引擎(VC6或VC9)VC11、版本(5.x)和类型(线程安全或非线程安全TS)进行匹配。这可能是一项艰巨的任务。NTS

    2. 将php_sqlite.dll( SQLiteDatabase) 抛在后面,然后运往新的php_sqlite3.dll(SQLite3对象)。您必须首先使用SQLite Studio之类的工具将数据库文件从 2.1 转换为 3.0(大小甚至可以降低一半),然后仔细比较SQLite和SQLite3 PHP 手册页以更改必要的对象和函数调用。

    如果选项二,请注意这不应该是一项艰巨的工作,因为变化不是那么大。例如,到目前为止我学到的东西:

    • SQLiteDatabase-> SQLite3,
    • SQLiteDatabase::unbufferedQuery-> SQLite3::query,
    • SQLiteResult::fetchAll(SQLITE_*)->SQLite3Result::fetchArray(SQLITE3_*)等等。

    至于获取,在旧的SQLite中,我们有:

    $rowsIMEI = $db->unbufferedQuery($imeiSQL)->fetchAll(SQLITE_ASSOC);
    
    foreach($rowsIMEI as $r)
    {
        ...
    }
    

    而在新的SQLite3中,我们应该:

    $rowsIMEI = $db->query($imeiSQL);
    
    while($r = $rowsIMEI->fetchArray(SQLITE3_ASSOC))
    {
        ...
    }
    

    其他更改需要类似的工作量,因此这不应该是一个终身过程。

    当然,我强烈建议任何人继续前进并选择第二个选项。在大多数情况下,进步是两个可用选项中较好的一个。

    • 4
  2. Best Answer
    Andy Shellam
    2010-03-01T02:57:21+08:002010-03-01T02:57:21+08:00

    谷歌上有不少关于同一问题的报告,但没有明确的解决方案。

    仔细检查您的 SQLlite 扩展是否已在 PHP 中启用,并且您应该能够使用 sqlite_* 系列函数(例如 sqlite_open)而不是 OOP 方法,我知道这并不理想。

    还只需检查您的用于 sqlite 的 PECL 模块是否 >= 1.0.0。

    • 2
  3. Tatupheba
    2011-10-28T03:58:28+08:002011-10-28T03:58:28+08:00

    我有同样的问题。

    如果你升级了你的 php 版本,一些旧的配置文件可能引用了一个不存在的文件。

    查看“conf.d”目录中的“.ini”文件。在我的情况下,我的“conf.d”目录的路径是Debian 系统中的“/etc/php5/conf.d”。

    专门谈论“SQLiteDatabase”类,我的问题是指向“sqlite.so”的“sqlite.ini”文件不存在。

    删除“sqlite.ini”文件后,确保有一个指向有效sqlite扩展名的ini文件(在这种情况下,“sqlite3.ini”指向“sqlite3.so”)并重新启动apache一切正常我。

    希望能帮助到你。

    • 2
  4. 2010-03-26T17:53:42+08:002010-03-26T17:53:42+08:00

    我有同样的问题,我忘了取消注释 extension=php_pdo_sqlite.dll

    和

    扩展=php_sqlite.dll

    • 1
  5. Kythin
    2011-03-23T17:29:38+08:002011-03-23T17:29:38+08:00

    我遇到了类似的问题,当尝试使用“yum install sqlite.i386”安装 sqlite 时,它​​说它已安装并且是最新的,但是由于某种原因,我的 php.ini 中没有关于它的任何内容并且它不起作用即使 phpinfo 报告“with sqlite=shared”等。

    在 php.ini 的某处添加“extension=sqlite.so”使其工作,我把我的放在靠近底部的 PDO 部分下,但我怀疑你把它放在哪里很重要。

    哦,确保在检查之前重新启动 apache,或者只是重新启动盒子!:)

    • 1
  6. Question Mark
    2013-09-19T04:24:39+08:002013-09-19T04:24:39+08:00

    这是一个老歌,但一个好人,我刚刚被再次蜇了!!!事实证明,有 sqlite 和 sqlite3 php 扩展要安装,您可能有后者,但正在查看“sqlite”扩展的手册页。

    我的解决方案是运行:

    print_r(get_declared_classes());
    

    这显示:

    .......
    [130] => mysqli_stmt
    [131] => SQLite3
    [132] => SQLite3Stmt
    [133] => SQLite3Result
    [134] => ImagickException
    .......
    

    所以我的安装没有只定义 SQLiteDatabase 类 SQLite3。现在参考 sqlite3 的 php 手册部分。

    • 1
  7. Ferdi
    2014-11-13T05:14:15+08:002014-11-13T05:14:15+08:00

    Arch Linux 系统上的 PHP 5.6.2 版本(当前:2014 年 11 月)

    另请注意:
    在 /etc/php/php.ini 中设置您的 sqlite3.so 扩展所在部分的路径:

    [sqlite3]
    sqlite3.extension_dir = /path/to/your/modules

    我的安装在 '/usr/lib/php/modules' 并且可以用 pacman 列出:

    $ sudo pacman -Ql php-sqlite

    这将为您列出已安装的 sqlite3.so 扩展和其他文件。

    您可以通过以下查询验证 PHP 是否找到了扩展:

    $ php --ri sqlite3

    正如wiki.archlinux.org中所解释的那样,我目前正在使用Adminer,并且在我在php.ini中设置此路径后它已经创建了一个数据库。

    感谢您提供上述信息并成功。

    • 1
  8. Jean-Louis GUENEGO
    2012-02-17T06:46:35+08:002012-02-17T06:46:35+08:00

    检查您的 php.ini(例如在 Windows 上):

    extension=php_pdo.dll
    extension=php_pdo_sqlite.dll
    extension=php_sqlite.dll
    
    • 0
  9. user203580
    2013-12-26T10:46:44+08:002013-12-26T10:46:44+08:00

    检查你的 php.ini。1)手动输入扩展文件的路径。取消注释:extension_dir = "C:\php\ext" 2)不要忘记在“动态扩展”章节中取消注释扩展:extension=php_mysqli.dll extension=php_pdo_sqlite.dll extension=php_sqlite3.dll

    • -1

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve