2017-10-08 88 views
0

我天大的Django项目已经在Apache 2上运行这是一般结构:Django的Apache的IO错误

root/apps/django/django_projects/Project 
├── autocache 
│ ├── cache.py 
│ └── cache.txt 
├── conf 
├── manage.py 
├── Project 
│ ├── __init__.py 
│ ├── settings.py 
│ ├── urls.py 
│ ├── wsgi.py 
│ └── ... 
├── myapp 
│ ├── __init__.py 
│ ├── apps.py 
│ ├── views.py 
│ ├── urls.py 
│ └── ... 

当显示myapp,我只是展现cache.txt内容。这是我必须做的是:

from django.shortcuts import render 
from django.http import HttpResponse 
from django.conf import settings 
import os 

def index(request): 
    cache_path = os.path.join(settings.CACHE_DIR, 'cache.txt') 
    with open(cache_path, 'r') as cache: 
     return HttpResponse(cache.read()) 
    return "Could not open file" 

的问题是,一个异常被抛出:

Request Method: GET 
Request URL: http://myip/Project/subwayapp/ 
Django Version: 1.11.5 
Exception Type: IOError 
Exception Value:  
[Errno 13] Permission denied: '/root/apps/django/django_projects/Project/autocache/cache.txt' 
Exception Location: /opt/bitnami/apps/django/django_projects/Project/myapp/views.py in index, line 8 
Python Executable: /opt/bitnami/python/bin/python 
Python Version: 2.7.13 

然而,这是ls -lcache.txt输出:

-rwxrwxr-- 1 root root 17 Oct 8 16:06 cache.txt 

据我所知,这意味着

  1. 这是一个文件
  2. 所有者可以读,写和执行它
  3. 组可以读,写和执行它
  4. 每个人都可以阅读
  5. 它的主人是root
  6. 本组是root
  7. 上次在16:06
  8. 修订于17年10月8日它被称为cache.txt

这似乎是每个人都应该能够读取cache.txt,但是我得到这个权限被拒绝IO错误。为什么会发生这种情况,我该如何解决?

+0

,你可以尝试打开从外壳的文件吗?它会是同样的结果吗? –

回答

0

我不知道,如果这是你的问题或没有,但我曾经见过一个父目录没有被标记读取和执行,并从能够访问它阻止了服务器问题。尝试chmod +x $PROJECT_ROOT/autocache

+0

不幸的是,没有奏效。 – Dopapp

+0

那么'chown'目录(和文件)到'www-data'用户怎么办? – cwallenpoole