我正在尝试使用 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”。
Class
SQLiteDatabase
是sqlite库中的一个对象,该支持在 PHP 5.4 中被删除,但在早期版本中可以禁用各种系统和配置,因为该库长期以来被标记为将被弃用。较新版本的 PHP 不再支持库
php_sqlite.dll
(Windows) 或(Linux),并分别替换为或。php_sqlite.so
php_sqlite3.dll
php_sqlite3.so
你可以:
尝试在 Internet 的某个地方找到
php_sqlite.dll
( )。php_sqlite.so
像这样或这样的链接可能对你有帮助。但是,您必须仔细地将旧的 SQLite 库文件与您的 PHP 平台(x64
或x86
)、构建引擎(VC6
或VC9
)VC11
、版本(5.x
)和类型(线程安全或非线程安全TS
)进行匹配。这可能是一项艰巨的任务。NTS
将
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中,我们有:
而在新的SQLite3中,我们应该:
其他更改需要类似的工作量,因此这不应该是一个终身过程。
当然,我强烈建议任何人继续前进并选择第二个选项。在大多数情况下,进步是两个可用选项中较好的一个。
谷歌上有不少关于同一问题的报告,但没有明确的解决方案。
仔细检查您的 SQLlite 扩展是否已在 PHP 中启用,并且您应该能够使用 sqlite_* 系列函数(例如 sqlite_open)而不是 OOP 方法,我知道这并不理想。
还只需检查您的用于 sqlite 的 PECL 模块是否 >= 1.0.0。
我有同样的问题。
如果你升级了你的 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一切正常我。
希望能帮助到你。
我有同样的问题,我忘了取消注释 extension=php_pdo_sqlite.dll
和
扩展=php_sqlite.dll
我遇到了类似的问题,当尝试使用“yum install sqlite.i386”安装 sqlite 时,它说它已安装并且是最新的,但是由于某种原因,我的 php.ini 中没有关于它的任何内容并且它不起作用即使 phpinfo 报告“with sqlite=shared”等。
在 php.ini 的某处添加“extension=sqlite.so”使其工作,我把我的放在靠近底部的 PDO 部分下,但我怀疑你把它放在哪里很重要。
哦,确保在检查之前重新启动 apache,或者只是重新启动盒子!:)
这是一个老歌,但一个好人,我刚刚被再次蜇了!!!事实证明,有 sqlite 和 sqlite3 php 扩展要安装,您可能有后者,但正在查看“sqlite”扩展的手册页。
我的解决方案是运行:
这显示:
所以我的安装没有只定义 SQLiteDatabase 类 SQLite3。现在参考 sqlite3 的 php 手册部分。
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中设置此路径后它已经创建了一个数据库。
感谢您提供上述信息并成功。
检查您的 php.ini(例如在 Windows 上):
检查你的 php.ini。1)手动输入扩展文件的路径。取消注释:extension_dir = "C:\php\ext" 2)不要忘记在“动态扩展”章节中取消注释扩展:extension=php_mysqli.dll extension=php_pdo_sqlite.dll extension=php_sqlite3.dll