PHP5, Sqlite 及 Windows
阿恆
在 Turn up the Crank 有一位作者分享他使用 PHP5、Sqlite、Windows 的經驗。作者需要一個數據庫儲存資料,由於涉及的資料處理工作很簡單,所以他選擇了 Sqlite,結果他發現:
- SQLite 3 無法與 PHP 相容:他不斷遇到一個錯誤訊息「PHP Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database」,網上有關 Sqlite 3 與 PHP 共用的文件十分缺乏,最後他終於發現 PHP 尚未支援 SQLite 3,對於 SQLite 3 已經推出了超過兩年仍未得到 PHP 的支援,作者感到大惑不解。
- PHP 與 SQLite 2 並不合作暢順:作者在放棄 SQLite 3 後轉而嘗試 SQLite 2,但發現 PHP 無法讀取他使用命令行建立的 SQLite 資料庫,在網絡上經過一番搜索後,他發現這個問題根本沒有解決方案。
- SQLite 對於目錄權限的要求極度愚蠢:SQLite 要求資料庫的路徑中每一個目錄它都具備讀/寫權限,例如資料庫儲存在 D:\websites\site_1234\db.sqlite,執行 PHP 的帳號須具備 D:\websites\ 及 D:\websites\site_1234\ 的讀/寫權限,如果伺服器上同時運行多個網站,這肯定是一個極大的安全漏洞。
作者最後感嘆說:「在 PHP 中使用 SQLite 真是極度痛苦,早知如此我便使用 PostgreSql,這可能有點大材小用,但至少不會浪費我那麼多時間。」