2015-07-12 29 views
3

我有這個簡單的功能。ubuntu服務器上的文件寫入訪問

@app.route('/save') 
def save(): 
    with open("hello.txt", 'w') as file: 
     file.write("hello") 
     file.close() 
    return "done" 

但是,當我參觀www.example.com/save路線,服務器返回500內部服務器錯誤和文件不被寫入。我應該爲這個位於/var/www/Flask應用設置什麼樣的權限,以便應用可以在目錄中寫入文件?

錯誤說:I/O error(13): Permission denied

回答

2

你將不得不確保蟒蛇處理用戶(在這種情況下,瓶應用服務器)的要救你文件的寫訪問目錄。例如,如果您想將文件保存到/ var/www目錄中,請確保python進程用戶具有正確的訪問權限。

ls -al /var/www 
sudo chown flask-user /var/www 

此外,你應該指向你的保存目錄,而不是文件保存到進程的工作目錄(這是什麼發生在你的情況下)瓶路線內。像這樣將正常工作:

@app.route('/save') 
def save(): 
    with open("/var/www/hello.txt", 'w') as file: 
     file.write("hello") 
     file.close() 
    return "done" 

注意:您也許應該選擇一些其他目錄,但在/ var/WWW爲您存儲文件的地方。

+0

誰是燒瓶用戶?它是我的燒瓶文件夾或app.py啓動應用程序?因爲服務器是apache,所以www-data使用情況如何?對不起,我真的很困惑。 – Zip

+0

flask-user是您的python應用程序正在運行的用戶。如果你正在使用www-data用戶運行python進程,那麼你可以用www-data替換flask-user。 – Boris

+0

謝謝。如何找出誰在運行python應用程序? – Zip