2013-10-17 27 views
0

我正在寫一個函數來獲取django應用程序中的文件大小。我們可以從django apache的裝載驅動器讀取文件嗎

Django應用程序,我們通過Apache服務器運行。

文件位於其他位置。我們通過掛載的路徑獲取該文件。

代碼如下,

import os 
filePath = '/mnt/file.html' 
size = flaot(os.stat(filePath)) 

如果說我的runserver命令運行Django的服務器則是工作的罰款。

如果我通過apache運行djnago服務器,那麼它將無法工作。

如果文件位於相同的位置,那麼它將通過兩種方式工作(使用apache和不使用apache)。文件路徑=「/家」或「/根」 OR從同一臺機器

任何位置會是什麼的另一種方式,通過Django的Apache將得到安裝路徑的文件大小

請幫助。 提前致謝。

回答

0

Apache可能在沒有權限訪問的用戶下運行/mnt

例如,在Ubuntu上Apache apache運行在www-data下。爲了證實這一點,請嘗試給運行apache的用戶提供/mnt文件夾的讀/執行權限,或者在運行apache的同一用戶下執行runserver,並查看是否得到相同的錯誤。

如果你不知道哪個用戶正在運行的Apache,試試:

ps aux | grep apache 

如果Apache服務器可執行文件的名稱不是Apache或Apache2的(例如,在一些Linux發行版被命名爲httpd的),那麼用上面命令中的可執行文件名替換apache。

比方說,用戶在運行Apache是​​WWW的數據:

su - www-data -c "cat /mnt/file.html" 

如果問題涉及到權限,你應該會看到一個錯誤信息,告訴你這是什麼問題。

+0

感謝您的幫助。 – Mugdha

0

這與目錄/文件權限和/或進程使用的用戶權限有關。

當您運行Django服務器時,它會在您的用戶名下運行,並且很可能您的用戶可以訪問保存文件的位置;但是當它運行在Apache之後時,它將以Apache或www數據用戶的身份運行,這些用戶無法訪問這些地方。

解決方案:您可以更改目錄權限,將Apache用戶添加到允許訪問此目錄的用戶組,或者讓Apache用戶成爲此目錄的所有者,選擇適合您的任何適合您的用戶!

+0

感謝您的幫助。我沒有獲得apache用戶的權限/所有權,所以我沒有測試。 – Mugdha

+0

我不確定你的意思;你說你不允許設置權限? – securecurve

相關問題