Apache Linux (Apache HTTP Server 2.4)

Apache: ошибка появляется только при загрузке файлов с кириллицей

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

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

Apache принимает файл с латинским названием, но загрузка с кириллицей в имени обрывается либо приложение отвечает ошибкой. Часто проблема возникает в разборе multipart/form-data приложением, кодировке имени, проверке расширения или сохранении в хранилище. Не существует общей директивы Apache, «включающей кириллицу в именах загрузок».

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

#Симптом и границы применимости

Apache принимает файл с латинским названием, но загрузка с кириллицей в имени обрывается либо приложение отвечает ошибкой. Часто проблема возникает в разборе multipart/form-data приложением, кодировке имени, проверке расширения или сохранении в хранилище. Не существует общей директивы Apache, «включающей кириллицу в именах загрузок».

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

Возможная причинаКак узнатьЧто делать
Приложение неверно обрабатывает исходное имяPHP и библиотеки могут по-разному обрабатывать Unicode/нормализацию.ASCII-файл загружается, а такое же содержимое с русским именем — нетПроверить обработку filename и хранение имени
Валидация или фильтр безопасности блокирует имяМодуль безопасности может проверять multipart-поля.403/406 и запись WAF при определённом заголовкеНайти конкретное правило вместо отключения WAF
Недопустимые символы в целевом хранилищеФайловое имя и URL-кодирование — разные уровни.Upload проходит, ошибка возникает при сохранении или скачиванииСверить файловую систему, кодировку и приложение

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

  1. Проверьте ровно один факторСоздайте два безвредных маленьких текстовых файла одинакового содержания: test.txt и пример-имени.txt. Через обычную форму сайта загрузите сначала латинский, затем кириллический файл при одинаковых правах. Не загружайте чужие персональные документы и не тестируйте опасные расширения.
  1. Запишите ответ браузераВ браузере F12 → «Сеть» найдите запрос формы после загрузки; посмотрите код ответа и путь, не копируя токены или тело формы с личными данными. Если браузер не отправляет запрос, ищите ошибку JavaScript и ограничения формы. Если Apache возвращает 403, проверяйте WAF/правила; 500 обычно требует журнала приложения.
  1. Сопоставьте ошибку сервера и приложенияНа SSH найдите ErrorLog VirtualHost и журнал PHP-FPM приложения. По времени теста изучите записи, не публикуя пользовательские данные. Убедитесь, что директория назначения существует и доступна служебному пользователю; не назначайте всем папкам права 777.
  2. Имя службы и путь к ErrorLog зависят от сборки/панели
    Linux · Терминал (Bash)КомандаНужен sudo
    Имя службы и путь к ErrorLog зависят от сборки/панели.
    sudo apache2ctl -S; sudo journalctl -u apache2 -n 80 --no-pager
  1. Проверьте ограничители размера и WAF отдельноЕсли одинаковый файл с латинским именем проходит, общие LimitRequestBody и ограничения размера PHP менее вероятны, но серверный фильтр может реагировать на multipart-поля. Ищите идентификатор правила WAF по времени. Не выключайте mod_security или проверки типа файлов целиком; допустимо точечное исключение после изучения риска.
  1. Проверьте корректную обработку имени приложениемРазработчик должен принимать UTF-8 имя, нормализовать и отображать его безопасно, хранить пользовательское имя отдельно от безопасного серверного имени, не допускать ../ и разделителей каталогов. Если в PHP используется move_uploaded_file, путь сохранения должен быть выбран сервером, а не напрямую составлен из непроверенного имени. Исправление делайте на копии, с тестовым файлом.
  1. Проверьте сохранение и скачиваниеПовторно загрузите разрешённый файл, затем скачайте его через интерфейс сайта. Ожидаются правильное исходное имя и неизменённое содержимое. Если в ссылке кириллица, убедитесь, что приложение правильно кодирует URL и заголовок Content-Disposition. При сбое откатите только изменённый обработчик, а не Apache целиком.

#Как проверить результат

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

#Если проблема не устранена

Если запрос обрывается до приложения, проверяйте конкретное правило WAF и промежуточный прокси; если приложению передан файл, но имя испорчено — ищите Unicode/кодировку в приложении и базе.

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

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

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