我遇到了一个使用django框架在python中开发的应用程序的问题,它使用FPDF库导出一个文件,然后应用程序使用该文件将其附加到自动电子邮件中。
当这个应用程序导出PDF并将其保存到media
目录时,文件不会从其父目录继承权限,只有读/写权限,这不允许Django找到文件,从而可以将其附加到邮件中。
我在互联网上搜索,发现有人有同样的问题,建议他们使用ACL配置来管理默认权限,我尝试了很多次不同的方法,但都不起作用。我不知道我可能做错了什么(我一直犯同样的错误(。在进行ACL配置后,文件继续以相同的权限导出,并且在应用命令chmod 777 -R *
时,这些文件没有更改其权限,我必须禁用ACL配置以允许我应用该命令。
这是出现的错误:
Internal Server Error: /treasury/sendMailsSupplierView/SBOJOZF
Traceback (most recent call last):
File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/var/www/johannasenvironment/JohannasEnviroment/treasuryEmails/views.py", line 33, in sendMailsSupplierView
sendEmailSupplier('narvaezsebas8@gmail.com', report) #sendEmailSupplier(emailSupplier, report)
File "/var/www/johannasenvironment/JohannasEnviroment/treasuryEmails/mails/mailsFunctions.py", line 50, in sendEmailSupplier
email_traslado.attach_file(report)
File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/mail/message.py", line 330, in attach_file
with path.open('rb') as file:
File "/usr/lib/python3.6/pathlib.py", line 1183, in open
opener=self._opener)
File "/usr/lib/python3.6/pathlib.py", line 1037, in _opener
return self._accessor.open(self, flags, mode)
File "/usr/lib/python3.6/pathlib.py", line 387, in wrapped
return strfunc(str(pathobj), *args)
FileNotFoundError: [Errno 2] No such file or directory: 'media/PaySuppiler--27022022142925.pdf'
这就是最新的未应用文件sudo chmod 777 *
:的样子
administrador@WEB-APPLICATION:/var/www/johannasenvironment/JohannasEnviroment/media$ ls -l
total 396
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:17 PaySuppiler--27022022141734.pdf
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:28 PaySuppiler--27022022142833.pdf
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:29 PaySuppiler--27022022142925.pdf
administrador@WEB-APPLICATION:/var/www/johannasenvironment/JohannasEnviroment/media$
这些是media
目录的权限:
drwxrwxrwx 2 administrador administrador 16384 feb 27 09:29 media
您可以检查正在访问的路径是否正确吗。根据介质文件夹中文件的权限,每个用户都有读取权限,您正在尝试读取文件(二进制形式(。
此错误(FileNotFoundError:[Erno 2]没有这样的文件或目录:"media/PaySupiler-27022022142925.pdf"(表明路径不正确。尝试使用基于文件的相对路径例如os.path.join(os.path.reapath(文件(,"/media/PaySupiler-27022022142925.pdf"(
为什么我会收到FileNotFoundError?