Errno 13 Permission denied with Django on a directory 我不想使用

Errno 13 Permission denied with Django on a directory I don't want to use

我在生产服务器上的 Django 应用程序中出现此错误:

[Errno 13] Permission denied: '/var/www/.config'

我从未在我的代码中要求访问这个不存在的文件或目录。服务器 运行 在我的 httpd.conf 中定义的不同目录中,我没有在我的 Django 中定义任何 /var/www/ 元素的使用设置。

在我的例子中,我将 biopython 库与 Django 一起使用:

from Bio import Entrez

Entrez.email = "my@email"

handle = Entrez.efetch("taxonomy", id="123, 1")
records = Entrez.parse(handle)

此代码在服务器上的 python 控制台中运行。但是指令Entrez.parse(handle)return在Django环境下报错

我在函数的源代码中没有看到任何指令要求编写或打开任何东西所以它似乎是 Django 的问题?

是配置问题吗?当我调用特定函数时,后台 Django 函数试图访问文件?

我的配置:

重启服务器或者重启django的服务
这很重要,因为后台服务必须知道配置的新位置。
我猜它适用于 python,因为库正在加载实际设置而后台服务正在使用旧设置。

希望能帮到你

事实上,Entrez.parse 正在调用 DataHandler 对象。此对象尝试在用户目录中写入类似以下内容:

home = os.path.expanduser('~')
directory = os.path.join(home, '.config', 'biopython')
local_xsd_dir = os.path.join(directory, 'Bio', 'Entrez', 'XSDs')
os.makedirs(local_xsd_dir)

因为biopython用户是httpd用户,家目录是/var/www/.

这里的解决方案是允许apache写入/var/www或者将其移动到不同的地方。