python - 尝试使用 Django 在 Apache Server 上创建 pdf 文件时出现权限问题
问题描述
我的网络应用程序部署有问题。
我在 apache2 上使用 Django 2.1.7。
我为文件夹和文件设置了所有适当的权限(至少我是这么认为的):
drwxr-s--- 10 bedirt www-data 4096 Mar 8 21:10 projectNal
在文件夹中:
-rwxr-x--- 1 bedirt www-data 11357 Mar 2 20:37 LICENSE
-rwxr-x--- 1 bedirt www-data 12 Mar 2 20:37 README.md
drwxr-x--- 4 bedirt www-data 4096 Mar 2 20:42 addQuestion
-rwxrwx--- 1 bedirt www-data 536576 Mar 2 21:51 db.sqlite3
-rwxr-x--- 1 bedirt www-data 542 Mar 2 20:37 manage.py
drwxrwx--- 2 bedirt www-data 4096 Mar 8 21:10 media
drwxr-x--- 3 bedirt www-data 4096 Mar 8 21:53 projectNal
drwxr-x--- 6 bedirt www-data 4096 Mar 8 22:49 qBank
-rwxr-x--- 1 bedirt www-data 512 Mar 2 20:37 requirements.txt
drwxr-x--- 12 bedirt www-data 4096 Mar 2 20:37 static
drwxr-x--- 5 bedirt www-data 4096 Mar 2 20:37 users
drwxr-x--- 5 bedirt www-data 4096 Mar 2 20:37 venv
我正在使用pylatex创建一个乳胶文档,过程是 - 它运行乳胶编译并删除 .tex 文件,并将 pdf 上传到媒体文件夹。
这是代码:
输出_tex.py
def create_worksheet_pdf(data, title):
# Document with `\maketitle` command activated
doc = Document(default_filepath='../media/', documentclass='exam')
# Title part
doc.preamble.append(Command('headrule'))
doc.preamble.append(Command('chead', '?'))
doc.preamble.append(Command('lhead', '?'))
doc.preamble.append(Command('rhead', '?'))
# questions
with doc.create(Section(title)):
doc.append(Command('begin', 'questions'))
for row in data:
questionHead = r'\question (' + row.year + '-' + row.source + '-' + row.problemNumber + ')\\\\'
doc.append(NoEscape(questionHead))
doc.append(NoEscape(r"" + row.problemStatement))
doc.append(Command('end', 'questions'))
# questions end
# end
doc.generate_pdf(filepath='media/'+title, clean_tex=True)
这些filepath
部分在这个文件中可能很重要,所以我不能使用 MEDIA_ROOT 或 MEDIA_URL 因为我得到错误。从我为媒体和数据库授予对 apache(www-data)的写访问权限的权限中可以看出。我的媒体文件等在本地工作正常,但我刚刚上传到服务器,现在我不知道为什么它不工作。
错误是:
PermissionError at /output/
[Errno 13] Permission denied: 'Momentum-Questions.tex'
我确实配置了MEDIA_ROOT
,MEDIA_URL
这里是:
设置.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
- 在我添加 craeting pdf 部分之前,一切都运行良好。所以我的 conf 文件和东西都很好,如果没有其他需要添加的话。