我的生产服务器上的Django应用程序中出现此错误:
[Errno 13]权限被拒绝:' /var/www/.config'
我从未要求在我的代码中访问此未存在的文件或目录。服务器在我的httpd.conf中定义的不同目录中运行,我还没有在Django设置中定义任何 / var / www / 元素的使用。
就我而言,我正在使用带有Django的biopython库:
from Bio import Entrez
Entrez.email = "my@email"
handle = Entrez.efetch("taxonomy", id="123, 1")
records = Entrez.parse(handle)
此代码在服务器上的python控制台中运行。但是指令Entrez.parse(handle)
在Django环境中返回错误。
我还没有看到任何要求在函数的源代码中编写或打开任何内容的指令,所以它似乎是Django的一个问题?
是配置问题吗?我调用特定函数时尝试访问文件的后台Django函数?
我的配置:
答案 0 :(得分:2)
事实上,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 或将其移至其他地方。
答案 1 :(得分:1)
重启服务器或重启django服务
这很重要,因为后台服务必须知道配置的新位置。
我想它适用于python,因为库正在加载实际设置而后台服务正在使用旧的。
希望我能帮忙