Панели хостинга LinuxFASTPANEL и аналогичные панели управления

После смены владельца сайта перестали сохраняться загружаемые файлы

  • Обновлено
  • Чтение ≈ 4 минуты

Краткий ответ

Нужно отдельно проверить PHP-папку временной загрузки, фактическую папку назначения и права процесса, а не выдавать 777 рекурсивно.

В этой статье
  1. Описание и признаки неисправности
  2. Как отличить возможные причины
  3. Пошаговая диагностика и решение
  4. Проверка результата и дальнейшие действия

#Описание и признаки неисправности

После переноса сайта на нового системного пользователя веб-форма принимает файл, но сохранение завершается ошибкой «Permission denied», «Unable to move uploaded file» или объект не появляется в каталоге загрузок. Часто файлы приложения остались во владении прежней учётной записи. Нужно отдельно проверить PHP-папку временной загрузки, фактическую папку назначения и права процесса, а не выдавать 777 рекурсивно.

#Как отличить возможные причины

Возможная причинаКак узнатьЧто делать
Каталог принадлежит старому пользователюПроцесс PHP больше не имеет права записи в назначение.stat показывает старого владельца, в журнале permission denied.Согласовать точечную смену владельца нужного каталога.
Нет доступа к одному из родительских каталоговДаже writable каталог не поможет без права прохода по пути.На родительском каталоге нет x, вывод namei -l это показывает.Уточнить владельца и права прохода, не менять системные каталоги.
Временная папка недоступнаPHP не может записать файл ещё до move_uploaded_file().В $_FILES код UPLOAD_ERR_CANT_WRITE или UPLOAD_ERR_NO_TMP_DIR.Проверить temp_path, quota, open_basedir и свободное место.

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

  1. Сохраните текущие права и пример ошибкиОткройте в панели карточку сайта и узнайте имя нового системного пользователя. В приложении повторите загрузку небольшого безвредного файла с уникальным именем и запишите время и точный текст ошибки. По SSH от имени администратора узнайте назначенный каталог загрузок из настроек сайта. Не пытайтесь чинить права на всём /var/www: у сайтов могут быть разные владельцы.
  2. Убедитесь, что проблема именно в записиПроверьте в панели журнал ошибок PHP и веб-сервера: ищите Permission denied, move_uploaded_file, open_basedir и код ошибки загрузки из $_FILES[...][error]. Код UPLOAD_ERR_INI_SIZE означает превышение размера, а не права; в этом случае откройте настройки лимитов PHP. Если ошибка возникает только у одного формата файла, изучите проверки типа и расширения в CMS.
  3. Определите пользователя выполняющегося обработчикаВ карточке сайта проверьте, какому системному пользователю назначен сайт/пул PHP-FPM или FastCGI. Не приравнивайте результат команды whoami в SSH к пользователю PHP: это разные процессы. Если владелец неясен, администратор может посмотреть настройки пула и процессы веб-обработчика; не включайте публичную страницу phpinfo() с раскрытием конфигурации.
  4. Посмотрите права каталога без измененияОткройте SSH и выполните stat -c "%U %G %a %n" /ПУТЬ/К/UPLOADS и namei -l /ПУТЬ/К/UPLOADS, подставив путь из настроек сайта; команды только читают владельца, группу и разрешения. Если путь не существует, сначала подтвердите правильность каталога и создавайте его только через штатный файловый менеджер панели в разрешённом месте.
  5. Проверьте диск и квотуВ панели посмотрите использование дискового пространства и ограничения учётной записи; при SSH выполните df -h и df -i. Вторая команда показывает свободные inode: при нуле новых файлов не создаст даже при наличии гигабайтов. Если квота исчерпана, удаляйте только проверенные собственные временные файлы после резервной копии; не очищайте чужие каталоги и журналы наугад.
  6. Согласуйте точечное исправление владельцаЕсли каталог и весь его состав действительно принадлежат именно этому сайту, сохраните список текущих владельцев и сделайте резервную копию. В файловом менеджере панели измените владельца только каталога загрузок на пользователя данного сайта, если панель поддерживает функцию. При SSH администратор может выполнить адресную смену владельца только после проверки точного пути и дерева. Не используйте рекурсивный chmod 777 или смену владельца всего веб-каталога.
  7. Отличите запрет в PHP от запрета файловой системыЕсли права корректны, посмотрите open_basedir, значение upload_tmp_dir, ограничения AppArmor/SELinux в журнале безопасности (если они включены). move_uploaded_file() зависит от разрешений на конечный путь. Для AppArmor/SELinux не отключайте защиту целиком: согласуйте правило только для разрешённого каталога. Верните изменённые настройки PHP, если тест не помог.
  8. Проверьте сохранение и откат владельцаЗагрузите небольшой файл, найдите его в файловом менеджере и убедитесь, что он открывается только через предусмотренный CMS путь. Посмотрите владельца нового файла с помощью stat. Если ошибка осталась, верните зафиксированные права и владельца при условии совместимости с процессом старой учётной записи, затем предоставьте администратору точный путь, код ошибки, имя пользователя и время. Не удаляйте тестовые пользовательские файлы без проверки.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Показ свободного дискового пространства и inode; команды не меняют файлы.
    Linux · Терминал (Bash)Команда
    Показ свободного дискового пространства и inode; команды не меняют файлы.
    df -h
    df -i
    Вариант 2Образцы только для чтения.
    Linux · Терминал (Bash)
    Образцы только для чтения. Замените /ПУТЬ/К/UPLOADS реальным путём, полученным из настроек сайта.
    stat -c "%U %G %a %n" /ПУТЬ/К/UPLOADS
    namei -l /ПУТЬ/К/UPLOADS

#Проверка результата и дальнейшие действия

Успех — новая загрузка сохраняется в ожидаемую папку, запись появилась под верным владельцем, ошибок Permission denied нет, чтение файла работает через интерфейс сайта. При неуспехе соберите код $_FILES, путь назначения, stat/namei, свободное место и передайте ответственному администратору, не продолжая произвольно менять права.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.