【问题标题】:Permission issue Python 3.4 apache权限问题 Python 3.4 apache
【发布时间】:2016-10-07 22:14:41
【问题描述】:

我有 FLASK 应用程序 www/FlaskApp/FlaskApp/init.py 文件功能 python 文件 wut 下一个包含

@app.route('/')
def hello():
    file = open('myfile.txt', 'w+')
    os.mknod("newfile.txt")
    return render_template('page2.html')

但是如果我运行站点,它会返回错误,在文件日志中写入

PermissionError: [Errno 13] Permission denied: 'myfile.txt'

我为所有 www 目录设置权限 777 打开 FileZilla 右键单击 www 目录,并设置 777 权限 为什么文件不创建?

【问题讨论】:

  • 您发布的代码甚至没有提到“myfile.txt”。所以该错误消息是不可能的。请发布可用于实际重现问题的最少代码量。以及相关文件上“ls -la”的输出。
  • 编辑,可以是file = open('myfile.txt', 'w+')
  • 这个函数的输出是什么:os.getcwd()?
  • 我不是 Flask 方面的专家,但我觉得它正在尝试在根目录中创建该文件,作为测试,尝试将绝对路径放在 open 方法中,看看是否有效:即file = open('/www/myfile.txt', 'w+')

标签: python apache python-3.x ubuntu


【解决方案1】:

不确定这是否是最佳解决方案,而且我对 Flask 的了解还不够,无法告诉您为什么相对路径不起作用(我认为它会将文件写入您的 python 脚本所在的位置)但是您可以通过使用环境变量来指定存储应用程序数据的位置来使其工作。例如:

import os

@app.route('/')
def open_file():
    filename = os.path.join(os.environ['FLASK_APP_DATA'], 'myfile.txt')
    print (filename)
    file = open(filename, 'w+')
    file.write("This is a test")
    file.close()

然后你可以在你的开发盒和你的产品盒上设置不同的环境变量。

【讨论】:

    猜你喜欢
    • 2016-09-21
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2021-10-26
    • 2021-12-16
    • 2011-05-31
    相关资源
    最近更新 更多