我在Windows XP上运行MicroApache( http://microapache.amadis.sytes.net ),并希望使用SQLite 3数据库。
PHP版本是5.2.9-2。
我的MicroApache版本通过php.ini中的2行支持SQLite 2:
延长= php_pdo.dll
延长= php_sqlite.dll
我testing扩展是否有三种工作方式:
1. phpinfo()
2. extension_loaded()和get_loaded_extensions()
3.使用示例代码var_dump()是常量SQLITE3_NUM(应该是整数2)并尝试创build数据库(错误:类'SQLite3'不存在)
我试过的东西(如果我能记住它们):
1.从PHP的完整安装中复制php_sqlite3.dll并将“extension = php_sqlite3.dll”添加到php.ini
– >错误“在php5ts.dll中找不到程序入口点gc_remove_zval_from_buffer”
2.用UPX压缩DLL(就像MicroApache的其他DLL似乎是)
– >不会在启动时显示错误,也不会在日志文件中显示,但是不起作用
3.用php.ini尝试了各种各样的东西
– 创build了一个“[sqlite3]”
– 前缀“sqlite3”。 到“extension_dir =”。 和“extension = php_sqlite3.dll”
– …
4.试图使用PDO,它说“找不到驱动程序”
谁可以帮助我获得SQLite 3的工作?
连接到SQLite 3数据库和类似问题的问题将在一篇名为“从PHP 5.25连接到SQLite3数据库”的论坛上进行讨论,这可能会回答您的一些疑问。
SQLite的最新版本编译为PHP5,并通过PDO启用。
它显示在PHPINFO.PHP中
2.0-dev“$ Id:sqlite.c,v 1.166.2.13.2.12 2008/12/31 11:17:44 sebastian Exp $”
听起来更像是测试代码的问题。 你是否通过在具有标准Apache和相同版本的PHP的SQLite系统上运行来进行交叉检查? phpinfo()
等的结果是什么?
最近的MicroApache发行版带有一个PHP / SQLite的留言板作为演示/测试。 这不行吗?
来想一想,你可能没有发现有一个SQLite发行版。 为什么不重新访问网站,并检查其他版本(只是解压缩和运行)。
一如既往,我指出,MicroApache并不打算在面向公众的网络服务器上使用,而不需要特别关注安全配置。 它只是作为通过软盘或USB棒在本地共享信息的一种方式而开发的。 虽然很容易变硬。
我相信你知道,SQLite开发人员重新命名了SQLite3的出现,包括开放的函数 – (这里: SQLite的C / C + +接口简介 ) – 我不知道这是如何被包括这个代码库的PHP开发人员处理到PHP中。 上面链接的页面的建议是,你可以用正确的PHP代码“按原样”打开PHp3数据库。
不建议混合来自PHP不同发行版的DLL。 除了“原样”之外,我不建议使用MicroApache发行版。 从不同版本的PHP等添加或混合到MicroApache可能会导致严重的错误或安全问题。
迄今为止,对MicroApache的SQLite一直很少或根本没有兴趣,所以我没有深入研究它,除了检查功能。
我不太依赖phpinfo()
报道的内容。
也许你可以更新你的信息,以确认报告的版本是否准确。
更新
我有时间去研究一下,在Mac OS Forge邮件列表上讨论php5-sqlite3可以解决你的问题。
PHP的实现是部分的,没有很好的文档。 某些SQLite3过程函数调用只能由基于对象的层次结构公开。 程序API只能提供打开SQLite 2数据库的能力,所以你坚持使用对象的外观。
还有一个PECL扩展,php-sqlite3,在2008年开发,目前在0.6版本。 这是php5-sqlite3端口的安装。 但是它没有提供你正在寻找的sqlite3_open函数。 相反,它提供了一个基于三个类的面向对象的接口:SQLite3,SQLite3Stmt和SQLite3Result。 它在这里被描述,而不完全,特别是安装
指示完全失踪:
MicroApache 2.0.63 + PHP 5.2.9 + SQLite
MicroApache 1.3.41 + PHP 4.4.9 + SQLite
MicroApache 1.3.41 + PHP 4.4.9 + SQLite
MicroApache 1.3.41 + PHP 4.4.9 + SQLite + GD2
希望你可以玩这些发行版,并解决你的问题。
发行版中包含一个SQLite3.DLL,可以直接从VB5 / 6或任何可调用DLL的兼容语言访问。
这是我刚才看了一个单独的项目。 这是通过编辑原始源在MSVC中生成的。 这个DLL与PHP / PDO不兼容,但可以通过CGI接口使用。 或者原来的SQLite 3 DLL可以通过Delphi等获得和使用
请注意,我确实有SQLite支持的发行版。 但它只支持版本2,而不是3。
我的MicroApache版本支持SQLite 2 […]
我想使用SQLite 3,因为它速度更快,我可以与我为Delphi中的项目创建的数据库进行交互,并且可以使用Firefox扩展SQLite Manager访问新创建的数据库。
我已经修补了一些这个问题,但仍然不能创建/访问SQLite 3数据库。
有趣的是,你在第1部分中提供的链接提到了一个在SQL文档中找不到的类“SQLiteDatabase”,它不是SQLite3扩展的一部分(这是面向对象的 – 就像你上一篇文章Mad Max中提到的那样)。
“SQLiteDatabase”创建一个数据库,但是当你打开它时,你可以看到它是在2.1版本中。
谢谢您的帮助。
编辑:
PDO只在使用DSN前缀“sqlite2”时才起作用,因为phpinfo()只在“PDO”部分列出驱动程序“sqlite2”。