Python 文件写入权限

Python 文件写入权限,python,ubuntu,amazon-ec2,flask,Python,Ubuntu,Amazon Ec2,Flask,我正在EC2 Ubuntu实例上运行Flask Web服务器。其目的是捕获传入帖子的主体,将其本地写入文件,然后将该文件上载到S3 基本上,守则是: @app.route('/', methods=['GET','POST']) @app.route('/index.html', methods=['GET','POST']) def index_home(): data = request.data with open('test.json', 'w') as f:

我正在EC2 Ubuntu实例上运行Flask Web服务器。其目的是捕获传入帖子的主体,将其本地写入文件,然后将该文件上载到S3

基本上,守则是:

@app.route('/', methods=['GET','POST'])
@app.route('/index.html', methods=['GET','POST'])
def index_home():
    data = request.data
    with open('test.json', 'w') as f:
        f.write(data)
## Upload the stuff to S3
当我在本地Flask webserver实例上运行它并从Postman发送带有json正文的帖子时,它工作得非常好。但是在EC2实例上,我在“test.json”文件上得到了一个权限错误(根据apacheerror.log),这导致页面加载出现500个错误

我搜索了Google和Stackoverflow(没有解决方案),但没有结果。这似乎是一个简单的问题,但我已经尝试了所有方法,但似乎都无法实现:我已将我的用户添加到www数据组,我已将/var/www文件夹和文件权限更改为我能想到的root、ubuntu(默认EC2 ubuntu用户)和www数据的所有组合,我已经查了777个目录…似乎什么都没用


显然,我是个新手。是否有配置文件或其他需要调整的内容才能使其正常工作?

您应该确保程序实际上正在试图写入您希望写入的目录中。它可能试图写入Python二进制文件的目录(或其他任何内容),这取决于您的命令和当前的工作目录。 出于测试目的,您可以尝试这样更改路径(确保/tmp对用户是可写的,应该是这样的):


您应该确保程序实际上正在试图写入您希望它写入的目录。它可能试图写入Python二进制文件的目录(或其他任何内容),这取决于您的命令和当前的工作目录。 出于测试目的,您可以尝试这样更改路径(确保/tmp对用户是可写的,应该是这样的):


文件
test.json
的绝对路径是什么?/var/www/FlaskApps/app/test.json。但是,我在那里创建了该文件,假设Flask将读取/写入该目录。我可能错了。文件
test.json
的绝对路径是什么?/var/www/FlaskApps/app/test.json。但是,我在那里创建了该文件,假设Flask将读取/写入该目录。我可能错了,你明白了:绝对路径。我真傻,浪费了很多时间。它在本地起作用这一事实使我很反感。我非常感谢您的快速回复。没问题,很乐意帮忙;)这件事花了我太长时间才解决。谢谢你明白了:绝对路径。我真傻,浪费了很多时间。它在本地起作用这一事实使我很反感。我非常感谢您的快速回复。没问题,很乐意帮忙;)这件事花了我太长时间才解决。谢谢
with open('/tmp/test.json', 'w') as f:
    f.write(data)