2014-05-20 25 views
1

我試圖讓我的項目在舞者(perl 5.16.3和centos 5.10)上運行,到目前爲止這是愉快的體驗 - 直到我嘗試將它部署到服務器上。perl使用dispatch.cgi運行CGI時的舞者問題

我決定做最簡單的事情,並將其作爲CGI應用程序運行,幫助 來自Dancer分發的默認dispatch.cgi腳本。

我使用Dancer::Deployment手冊的默認apache設置,但 出錯了。經過一天的半工半讀工作 項目我推導出以下奇怪的事情:在運行通過 dispatch.cgi時,我的項目能夠從sqlite數據庫讀取,但它不能寫入數據庫,所以Dancer :: Session: :DBI沒有正常工作 ,因此存在問題。

如果我運行單機app.pl

plackup -E production -p 80 bin/app.pl 

它工作正常,並能夠將數據插入到數據庫項目。我試圖將 權限更改爲0666上的sqlite數據庫文件,但它沒有幫助。

那麼爲什麼在運行CGI時出現sqlite問題,以及如何解決這個問題呢?

+2

在'cgi'中運行時,腳本使用的是Web服務器的用戶,而不是腳本的所有者,該用戶需要具有對sqlite數據庫文件的讀/寫訪問權限。允許Apache讀/寫SQLite文件的權限,你應該全部設置。 – MattSizzle

+0

好吧,是的。正如我所說我甚至使dbase文件通用可寫,沒有成功。此外,我將所有者更改爲apache的用戶 - 同樣。 – Sly

回答

1

嗯,這是權限問題,但不是爲dbase文件 - 包含該文件的目錄! 顯然,sqlite在更新基礎時創建了一些臨時文件。 請注意。