gpt4 book ai didi

php - 在 MicroApache 中运行 SQLite 3

转载 作者:可可西里 更新时间:2023-11-01 10:29:58 24 4
gpt4 key购买 nike

我在 Windows XP 上运行 MicroApache ( http://microapache.amadis.sytes.net ) 并且想使用 SQLite 3 数据库。

PHP版本为5.2.9-2。

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

我通过 3 种方式测试扩展是否有效:
1. phpinfo()
2. extension_loaded() 和 get_loaded_extensions()
3. 使用 var_dump() 常量 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(就像 MicroApache 的其他 DLL 一样)
-> 启动时不显示错误,也不在日志文件中显示错误,但不起作用
3. 用 php.ini 尝试了各种东西
- 创建了一个部分“[sqlite3]”
- 前缀为“sqlite3”。到“extension_dir=”和“extension=php_sqlite3.dll”
- ...
4. 尝试使用 PDO,它说“找不到驱动程序”

谁可以帮助我让 SQLite 3 正常工作?

最佳答案

题为 "Connecting to SQLite3 database from PHP 5.25" 的论坛帖子涵盖并讨论了连接到 SQLite 3 数据库的问题和类似问题。这可能会回答您的一些疑问。

最新版本的 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 不适用于面向公众的网络服务器。它只是作为一种通过软盘或 U 盘在本地共享信息的方式而开发的。不过,它很容易硬化。

我确定您知道随着 SQLite3 的出现,SQLite 开发人员重命名了许多函数,包括 open 函数 -(参见此处:An Introduction To The SQLite C/C++ Interface)-我不确定这是如何处理的PHP 开发人员将此代码库包含到 PHP 中。上面链接页面的建议是,您可以使用正确的 PHP 代码“按原样”打开 PHP3 数据库。

不推荐混合来自不同 PHP 发行版的 DLL。除了“原样”之外,我不建议将 MicroApache 发行版用于任何其他用途。将来自不同版本的 PHP 等的 DLL 添加或混合到 MicroApache 可能会引入严重的错误或安全问题。

到目前为止,人们对带有 MicroApache 的 SQLite 几乎没有兴趣,所以除了检查功能是否有效之外,我真的没有深入研究它。
我不太依赖 phpinfo() 报告的内容。

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

更新

我有时间进行更多研究并讨论 php5-sqlite3 at the Mac OS Forge mailing list回答你的问题。

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

There is also a PECL extension, php-sqlite3, which was developed during 2008, currently at version 0.6. This is what the php5-sqlite3 port installs. But it does not provide the sqlite3_open function you are seeking. Rather, it gives you an object-oriented interface based around three classes: SQLite3, SQLite3Stmt and SQLite3Result. It is described here, rather incompletely, notably the installation
instructions are totally missing:

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

有一个 SQLite3.DLL 作为礼貌包含在发行版中,可以直接从 VB5/6 或任何可以调用 DLL 的兼容语言访问。

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

关于php - 在 MicroApache 中运行 SQLite 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2680743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com