Errno 13 Отказано в доступе при попытке сохранить изображение в media_root

Я разместил свой проект python + django на pythonanywhere.com и столкнулся с проблемой, когда хочу сохранить элемент с изображением. Все остальные поля item сохраняются, а изображение нет. Вот и вся ошибка:

PermissionError at /admin/core/bike/add/

[Errno 13] Permission denied: '/home/omega/resizedComm/media_root/bikes/xx.png'

Мои настройки:

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static_in_env')]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_root')

Что может быть причиной этой ошибки?

Итак, когда я меняю MEDIA_ROOT на другой путь, он действительно работает (он создает папку и загружает туда изображения), но происходит сбой, когда я пытаюсь сохранить изображение в исходном media_root. Есть идеи?

Имеет ли пользователь, с которым работает ваш скрипт, доступ на запись к '/home/omega/resizedComm/media_root/bikes/?

Matthias 16.12.2020 17:30

@Matthias Матиас, я не очень понимаю вопрос, ты имеешь в виду, как суперпользователь? Когда я запускаю приложение на локальном хосте, все работает нормально.

OmletteDuFromage 16.12.2020 17:33

@OmletteDuFromage У вас есть доступ к вашим файлам на сервере?

Parantap Parashar 16.12.2020 17:36

@ParantapParashar хорошо, я могу получить доступ к файлам с панели pythonanywhere, должен ли я предоставлять доступ где-то еще?

OmletteDuFromage 16.12.2020 17:42

Каков результат ls -ld /home/omega/resizedComm/media_root/bikes?

Danny Staple 16.12.2020 18:32

@DannyStaple это говорит dr-xr-xr-x 2 omega registered_users 4096 Jun 19 21:54

OmletteDuFromage 16.12.2020 18:46
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
4 147
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша ошибка и вывод ls предполагают, что папка, в которую вы пытаетесь записать, не имеет прав на запись.

Либо вручную, либо с помощью кода вам нужно будет предоставить права на запись. Если ваш код работает как омега, то chmod u+w <folder path> должен это делать. В питоне это должен делать chmod с числовым кодом 755.

import os
os.chmod(<folder path>, 755)
chmod u+w <folder path> сработало, спасибо
OmletteDuFromage 16.12.2020 19:03

Другие вопросы по теме