2015-07-12 31 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