Skip to main content
 首页 » 编程设计

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

2024年08月22日27dflying

我在生产服务器上的 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) 在 Django 环境中返回错误。

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

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

我的配置:

  • python 3.3
  • Django 1.8
  • 生物蟒 1.67

请您参考如下方法:

事实上,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 或将其移动到不同的地方。