Php 在微PACHE中运行SQLite 3

Php 在微PACHE中运行SQLite 3,php,windows,apache,sqlite,Php,Windows,Apache,Sqlite,我正在Windows XP上运行microPache(),希望使用SQLite 3数据库 PHP版本是5.2.9-2 我的MicroApache版本通过php.ini中的两行代码支持SQLite 2: extension=php_pdo.dll extension=php_sqlite.dll 我测试扩展是否以3种方式工作: 1.phpinfo() 2.扩展加载()和获取加载的扩展() 3.使用var_dump()s常量SQLITE3_NUM(应该是整数2)的示例代码 并尝试创建数据库(错误:类

我正在Windows XP上运行microPache(),希望使用SQLite 3数据库

PHP版本是5.2.9-2

我的MicroApache版本通过php.ini中的两行代码支持SQLite 2:
extension=php_pdo.dll
extension=php_sqlite.dll

我测试扩展是否以3种方式工作:
1.phpinfo()
2.扩展加载()和获取加载的扩展() 3.使用var_dump()s常量SQLITE3_NUM(应该是整数2)的示例代码 并尝试创建数据库(错误:类“SQLite3”不存在)

我尝试过的事情(如果我都记得的话):
1.从php的完整安装中复制了php_sqlite3.dll,并在php.ini中添加了“extension=php_sqlite3.dll”
->错误“在php5ts.dll中找不到过程入口点gc_remove_zval_from_buffer”
2.用UPX压缩DLL(就像Micropache的其他DLL一样)
->启动时不显示错误,也不在日志文件中显示错误,但不起作用
3.使用php.ini尝试了各种方法
-创建了一个节“[sqlite3]”
-前缀为“sqlite3.”到“extension\u dir=”和“extension=php\u sqlite3.dll”
-…
4.试图使用PDO时,它说“找不到驱动程序”


谁能帮我让SQLite 3正常工作?

请注意,我确实有支持SQLite的发行版。但是,它只支持版本2,不支持版本3

我的MicroApache版本支持SQLite 2[…]


我想使用SQLite 3,因为它速度更快,我可以与我在Delphi中为一个项目创建的数据库进行交互,我可以使用Firefox扩展SQLite Manager访问新创建的数据库。

连接SQLite 3 DBs的问题和类似问题在一篇题为,这可能会回答您的一些问题

SQLite的最新版本编译到PHP5中,并通过PDO启用

它在PHPINFO.PHP中显示为

2.0-dev“$Id:sqlite.c,v1.166.2.13.2.12 2008/12/31 11:17:44 sebastian Exp$”

听起来更像是测试代码的问题。您是否在使用标准Apache和相同版本的PHP的SQLite系统上运行过交叉检查?
phpinfo()
等的结果是什么

最近的MicroApache发行版附带了一个PHP/SQLite留言簿作为演示/测试。这不管用吗

仔细想想,您可能还没有发现SQLite发行版。为什么不重新访问该站点并检查其他版本(只需解压缩并运行)

正如我一直指出的那样,MicroApache不打算在面向公众的Web服务器上使用,而需要特别注意安全配置。它的开发仅仅是通过软盘或U盘在本地共享信息的一种方式。但它很容易变硬

我相信您知道,随着SQLite3的出现,SQLite开发人员重命名了许多函数,包括开放函数-(参见此处:)-我不确定PHP开发人员如何将此代码库包含到PHP中。上面链接的页面建议您可以使用正确的PHP代码“按原样”打开PHp3 DBs

不建议混合使用来自不同PHP发行版的DLL。除了“按原样”之外,我不推荐使用Micropache发行版。在Micropache中添加或混合来自不同版本PHP等的DLL可能会引入严重的bug或安全问题

到目前为止,人们对使用MicroApache的SQLite很少或根本没有兴趣,因此除了检查其功能是否正常外,我还没有深入研究它。
我不太依赖
phpinfo()
报告的内容

也许您可以更新您的信息,以确认报告的版本是否准确

更新

我有更多的时间研究和讨论你的问题的答案

PHP实现是局部的,没有很好的文档记录。某些SQLite3过程函数调用仅由基于对象的层次结构公开。过程API只提供了打开SQLite 2数据库的功能,因此从外观上看,您只能使用对象

还有一个PECL扩展php-sqlite3,它是 2008年开发,目前位于 版本0.6。这就是 php5-sqlite3端口安装。但是它 不提供sqlite3\u打开 你正在寻找的功能。相反,它 为您提供了一个面向对象的接口 基于三个类:SQLite3, SQLite3Stmt和SQLite3Result。它是 这里描述得相当不完整, 尤其是安装
说明完全缺失:

希望您可以使用这些发行版并解决您的问题

发行版附带了一个SQLite3.DLL作为礼节,可以直接从VB5/6或任何可以调用该DLL的兼容语言访问它


这是我不久前看过的一个单独的项目。这是通过编辑原始源代码在MSVC中生成的。此DLL与PHP/PDO不兼容,但可以通过CGI接口使用。或者,可以通过Delphi等获得并使用原始的SQLite 3 DLL。

我已经进一步解决了这个问题,但仍然无法创建/访问SQLite 3数据库

有趣的是,您在第1部分中提供的链接提到了一个类“SQLiteDatabase”,它在PHP文档中找不到,也不是SQLite3扩展的一部分(它是面向对象的,正如您在上一篇文章Mad Max中提到的)

“SQLiteDatabase”创建了一个数据库,但是当您打开它时,您可以看到它在版本2.1中

谢谢你的帮助

编辑:
PDO只在我使用DSN前缀“sqlite2”时起作用,这并不奇怪,因为phpinfo()只在“PDO”部分下列出驱动程序“sqlite2”。

主持人注意:这个答案