我有一個小的基於Perl的CGI應用程序,我在爲SourceForge項目提供的項目網站空間中運行該應用程序。此應用程序將數據存儲在SQLite(v。3)數據庫文件中。如何在SourceForge項目的網頁空間中寫入SQLite數據庫文件?
當我從shell運行測試腳本時,我可以讀寫這個SQLite文件。但是,當CGI代碼由Apache執行時,它具有隻讀訪問權限。寫入操作會導致在日誌文件中的錯誤:
error.log.web-2:[Wed Oct 27 14:40:22 2010] [error] [client 127.0.0.1] DBD::SQLite::db do failed: unable to open database file
出於測試目的,我已經拍成爲SQLite的文件的權限一路攀升至777沒有什麼區別。
但是,SourceForge的項目網絡空間有一些有趣的警告,我不知道我是否被絆倒了。通常,主Web服務器文件系統對Apache是只讀的。如果您的文件需要在運行時可寫,則應將它們存儲在其他地方的特殊「持久」目錄中......並從您的網絡空間創建符號鏈接到該目錄下的實際文件。
我已經完成了這項工作,並且對於符號鏈接和「持久性」位置下的實際SQLite文件,權限設置爲777。我知道這個機制一般工作,因爲我對緩存和日誌文件做了同樣的事情,它在那裏工作。
我想知道如果有什麼時髦的關於SQLite的本身,沿着它的線條不想打開一個符號鏈接(而不是原始文件)進行寫入。
原始父目錄具有權限「drwxrws - x」。當我嘗試修改這個命令時,chmod命令顯示「操作不允許」。 – 2010-10-27 16:14:28
您可以嘗試使用pragma將temp_store設置爲MEMORY。 「PRAGMA temp_store = MEMORY」。 http://www.sqlite.org/pragma.html#pragma_temp_store – 2010-10-27 19:40:55
SourceForge支持說什麼? – 2010-10-28 03:36:14