【问题标题】:How can I fix "PermissionError: [Errno 13] Permission denied: 'static'"? [duplicate]如何修复“PermissionError:[Errno 13] Permission denied:'static'”? [复制]
【发布时间】:2023-10-26 00:29:01
【问题描述】:

我正在使用 flask 和 mod_wsgi 运行 apache2 服务器。

在我的烧瓶脚本中,我有一个创建新目录的函数:

def updateDir():
    dbData = News.query.all()
    for row in dbData:
        rowLink = createLink(row.id, row.title)
        finalPath = "static/img/posts/{}".format(rowLink)
        os.makedirs(finalPath, exist_ok=True)

当我尝试运行脚本时,它会显示此回溯:

ERROR in app: Exception on /refresh [GET]
 Traceback (most recent call last):
   File "/var/www/abc/abc/venv3/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
     response = self.full_dispatch_request()
   File "/var/www/abc/abc/venv3/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
     rv = self.handle_user_exception(e)
   File "/var/www/abc/abc/venv3/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
     reraise(exc_type, exc_value, tb)
   File "/var/www/abc/abc/venv3/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
     raise value
   File "/var/www/abc/abc/venv3/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
     rv = self.dispatch_request()
   File "/var/www/abc/abc/venv3/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
     return self.view_functions[rule.endpoint](**req.view_args)
   File "/var/www/abc/abc/main.py", line 133, in refresh
     updateDir()
   File "/var/www/abc/abc/main.py", line 77, in updateDir
     os.makedirs(finalPath, exist_ok=True)
   File "/usr/local/lib/python3.6/os.py", line 210, in makedirs
     makedirs(head, mode, exist_ok)
   File "/usr/local/lib/python3.6/os.py", line 210, in makedirs
     makedirs(head, mode, exist_ok)
   File "/usr/local/lib/python3.6/os.py", line 210, in makedirs
     makedirs(head, mode, exist_ok)
   File "/usr/local/lib/python3.6/os.py", line 220, in makedirs
     mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: 'static'

我已经授予 www-data 写入“静态”文件夹的权限,但它仍然显示错误。

如果我没有涵盖所有内容以帮助我,请随时提出问题。

【问题讨论】:

  • 这似乎与*.com/questions/18963494/…密切相关
  • 我看过这篇文章,那里的说明对我不起作用。我使用的是烧瓶而不是 django。
  • 我建议将来在您的问题中抢先链接到类似的材料。然后在这种情况下,django 工具与flask 工具不同,但有共同的元素,特别是会出现,Apache 服务器。因此,假设您将链接到另一个答案并简要讨论其更大的教训,例如检查所有权,以及检查 URL 到服务器上物理路径的映射。此信息将有助于其他可能对您的问题有经验的 Web 开发人员。

标签: flask apache2 mod-wsgi wsgi permission-denied


【解决方案1】:

不要使用相对路径名。进程的当前工作目录通常不会是您的代码所在的位置。您需要计算相对于某个锚点的绝对路径。见:

【讨论】: