2 回答

TA貢獻1790條經驗 獲得超9個贊
您向我們展示了$ groups ubuntu
和的輸出$ groups www-data
。它表示ubuntu
具有組寫入權限,例如附加到664
組中的文件www-data
。
但是您的網絡服務器是以用戶身份www-data
而不是作為用戶運行的ubuntu
,所以這無關緊要。重要的是想要www-data
屬于該ubuntu
組以便寫入當前數據庫文件,但它不在該組中。你可以編輯/etc/groups
來解決這個問題。
或者,您可能希望$ sudo chgrp www-data data.db
(或 chown)授予 apache Web 用戶對該文件的訪問權限。

TA貢獻1862條經驗 獲得超6個贊
終于自己弄清楚是什么問題:這個問題背后的錯誤是apache用戶與ubuntu不同。所以當 apache 運行我的 web 應用程序時,它是從不同的工作目錄運行的,當然找不到數據庫文件。
因此,我首先在代碼中更改了數據庫 .db 文件的路徑以更正絕對路徑,如下所示:
engine = create_engine('sqlite:////home/ubuntu/flaskproject/data.db',connect_args={'check_same_thread': False})
然后將項目文件夾和數據庫文件的所有者更改為 www-data(apache 用戶):
sudo chown www-data .
sudo chown www-data data.db
并確保所有者對項目文件夾和 data.db 文件具有讀寫權限(在我的情況下已經滿足)
解決權限問題的另一種解決方案是將用戶 www-data 添加到 ubuntu 組,因此我們不需要更改項目文件夾和 data.db 文件的所有者(但要確保 ubuntu 組中的用戶具有讀寫權限)
usermod -a -G ubuntu www-data
所以總的來說,只要數據庫的路徑是正確的(建議絕對路徑)并且用戶 www-data 具有項目文件夾和數據庫文件的權限,一切都應該正常。
添加回答
舉報