Если сайт не видит папку uploads, перестают загружаться изображения, документы, аватары, экспортные файлы и медиа в админке. Часто проблема появляется после переноса сайта, смены пользователя или обновления панели.

Нужно проверить фактический путь к uploads, права доступа, владельца, настройки CMS и ограничения окружения. Ошибка не всегда решается простым созданием папки.

Коротко: что сделать

  • Проверить, существует ли папка uploads по ожидаемому пути
  • Проверить владельца и права папки
  • Проверить путь в настройках CMS или config
  • Проверить open_basedir и chroot-ограничения
  • Проверить symlink или Docker volume, если они используются

Основные причины

У проблемы может быть несколько уровней: интерфейс, backend, права, внешняя интеграция, кэш, очередь задач или настройки сервера. Поэтому лучше не гадать, а пройти цепочку от действия пользователя до записи в логах и базе.

  • Путь uploads изменился после переноса сайта
  • Папка принадлежит другому пользователю
  • PHP не имеет права читать или писать в директорию
  • open_basedir запрещает доступ к реальному пути
  • Symlink ведет за пределы разрешенной директории

Пошаговая диагностика

Диагностику удобнее вести на одном воспроизводимом примере: один пользователь, один заказ, один запрос, один файл или одно событие. Так проще отделить реальную причину от случайных совпадений.

  • Сравнить document root и путь uploads в конфиге
  • Выполнить ls -la для папки и родителя
  • Проверить запись тестового файла от имени сайта
  • Посмотреть error_log при загрузке файла
  • Проверить настройки медиа в CMS

Как исправить проблему

Исправление должно закрывать первопричину. Если затронуты платежи, доступы, персональные данные, уведомления или рабочие заказы, сначала проверьте решение на тестовом сценарии и сохраните возможность отката.

  • Создать папку по правильному пути
  • Назначить корректного владельца и группу
  • Выдать минимально нужные права на чтение и запись
  • Исправить путь в конфиге CMS
  • Настроить volume или symlink без выхода за ограничения

Безопасный план решения

Не меняйте права рекурсивно на весь сайт без проверки. Чаще достаточно правильно настроить владельца и права именно для uploads, cache и временной папки.

Чего не стоит делать

  • Не ставить 777 на весь проект
  • Не переносить uploads без обновления путей
  • Не удалять старую папку до проверки ссылок на файлы
  • Не отключать ограничения PHP без понимания риска

Что подготовить перед исправлением

  • Путь сайта на сервере
  • CMS или framework
  • Текст ошибки загрузки
  • Права и владелец текущей папки uploads
  • Информация о переносе или обновлении

FAQ

Почему картинки старые видны, а новые не загружаются?

Старые файлы могут отдаваться веб-сервером, а новая запись падает из-за прав или пути.

Чем отличается read и write проблема?

При read сайт не видит уже существующие файлы, при write не может создать новые. Проверять нужно оба сценария.

Может ли мешать Docker?

Да, если uploads не примонтирован как volume или контейнер пишет внутрь временной файловой системы.

Когда стоит обратиться за помощью

Обратиться стоит, если сайт рабочий и uploads содержит медиа, документы клиентов или файлы заказов.

Итог

Проверьте путь, владельца, права и ограничения PHP. Если нужно восстановить uploads без потери файлов, пишите в Telegram @rabotator_support.