2010-04-21 54 views
2

我在Windows XP上運行MicroApache(http://microapache.amadis.sytes.net)並希望使用SQLite 3數據庫。在MicroApache中運行SQLite 3

PHP版本是5.2.9-2。

我MicroApache版本有SQLite的通過2線在php.ini 2支持:
延長= php_pdo.dll
延長= php_sqlite.dll

我測試的擴展是否在3個方面的工作:
1.使用示例代碼var_dump()爲常量SQLITE3_NUM(應該是整數2) 並嘗試創建數據庫(錯誤:class' SQLite3'不存在)

事情我已經嘗試了(如果我能把它們都記住):
1.完全安裝PHP的複製php_sqlite3.dll並加入「延長= php_sqlite3.dll」爲php.ini
- >錯誤「在php5ts.dll中找不到程序入口點gc_remove_zval_from_buffer」
2.使用UPX壓縮DLL(與MicroApache的其他DLL似乎一樣)
- >在開始時以及日誌文件中不顯示錯誤,但不起作用
3.用php.ini試過各種東西
- 創建了一段「[sqlite3]」
- 前綴爲「sqlite3」。到「extension_dir =」。和「延長= php_sqlite3.dll」
- ...
4.嘗試使用PDO,它說「找不到驅動程序」

誰能幫我弄的SQLite 3的工作?

回答

0

請注意,我確實有SQLite支持的發行版。但是,僅具有版本2,而不是3

My MicroApache version has SQLite 2 support [...]

支持,我想使用SQLite 3,因爲它更快,我可以用我在德爾福項目中創建的數據庫交互,我可以訪問新使用Firefox擴展SQLite管理器創建數據庫。

2

連接到SQLite 3數據庫和類似問題的問題將在論壇帖子上討論,標題爲"Connecting to SQLite3 database from PHP 5.25"這可能會回答您的一些疑問。

最新版本的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不打算要在面向公衆的Web服務器使用,而不具體注意安全配置。它只是作爲通過軟盤或USB棒在本地共享信息的一種方式而開發的。雖然很容易變硬。我相信你知道,SQLite開發者重新命名了SQLite3的出現,包括打開的函數 - (請看這裏:An Introduction To The SQLite C/C++ Interface) - 我不知道這是如何處理的PHP開發人員將此代碼包括到PHP中。上面鏈接的頁面的建議是,您可以用正確的PHP代碼「按原樣」打開PHp3 DB。

不推薦從不同的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接口使用。另外原來的SQLite 3 DLL可以通過Delphi等獲得並使用。

+0

主持人筆記:這個答案是從8個不同的答案'部分'拼湊在一起。請把它們綁在一起,如果可以的話,改進它。 – 2011-04-01 19:37:56

0

我已經修復了這個問題,但仍然無法創建/訪問SQLite 3數據庫。有趣的是,您在第1部分中提供的鏈接提到了一個類「SQLiteDatabase」,它在PHP文檔中找不到並且不是SQLite3擴展的一部分(它是面向對象的 - 正如您在上一篇文章中所述,Mad Max )。

「SQLiteDatabase」創建一個數據庫,但是當您打開它時,您可以看到它在版本2.1中。

感謝您的幫助。

編輯:
PDO只能當我使用DSN前綴「sqlite2」這是不是很奇怪,因爲phpinfo()函數只列出部分下的「PDO」司機「sqlite2」。