Ошибка HTTP. / Загрузка не удалась. Попробуйте ещё раз
#Где искать причину
«Ошибка HTTP» без подробностей — общее сообщение: обработка изображения на сервере завершилась сбоем. Чаще всего причина в ограничении памяти PHP при создании миниатюр, лимитах upload_max_filesize и post_max_size, прерывании по max_execution_time, неверных правах на wp-content/uploads, конфликте плагинов оптимизации, либо проблеме модуля Imagick. Эту статью следует читать с точки зрения лимитов и прав доступа; статья про Imagick/GD рассматривает обработку изображений отдельно.
#Причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Мало памятиЛимит PHP. | Ошибка на больших изображениях. | Поднимите memory_limit. |
| Лимит размера файлаМалый upload_max_filesize. | Ошибка при тяжёлых файлах. | Увеличьте лимит. |
| Неверные праваПапка не пишется. | Ошибка на любом файле. | chmod 755/644, chown. |
| ТаймаутДолгая обработка. | Ошибка после ожидания. | Увеличьте max_execution_time. |
| Плагин оптимизации или безопасностиБлокирует. | Без плагинов работает. | Найдите виновника. |
| Мало местаКвота исчерпана. | Любая загрузка падает. | Освободите место. |
#Порядок
- Загрузите небольшой файлВ «Медиафайлы → Добавить новый» WordPress попробуйте загрузить небольшой
.jpgдопустимого размера с обычным латинским именем. Затем попробуйте исходное изображение; запишите его формат, размер и точный ответ сайта. Если небольшой файл загружается, проблема вероятнее в лимите, обработке формата или ресурсах, а не в полной недоступности каталога. - Проверьте ограничения загрузки PHP через «Здоровье сайта»В «Инструменты → Здоровье сайта → Информация → Сервер» посмотрите действующие лимиты PHP и библиотеку обработки изображений (GD/Imagick), если эти сведения доступны. Не путайте параметры PHP CLI с веб-сайтом. Если параметр
file_uploadsвыключен, проблему должен решать администратор хостинга. - Уточните действующие лимиты PHP и измените их при необходимостиПри подтверждённом превышении лимита администратор хостинга в конфигурации нужного пула PHP может поднять
upload_max_filesizeиpost_max_size(второй — больше размера файла) с учётом доступной памяти и ограничений сервера. Не ставьте одинаковое значение 64M для обоих, поскольку POST содержит дополнительные данные; перезагрузите нужный PHP-FPM и проверьте параметры снова. - Проверьте права на каталог wp-content/uploadsВ файловом менеджере хостинга найдите
wp-content/uploads, проверьте существование подпапки года/месяца и возможность записи пользователем PHP. При SSH используйтеnamei -lиls -ld; не выполняйте рекурсивныйchmod 755/644на всём каталоге без проверки владельца и ACL, иначе нарушите доступ к загруженным файлам. - Отключите плагины и вернитесь к стандартной темеЕсли сбой начался после установки плагина сжатия/оптимизации изображений, отключите его одного на тестовом сайте и повторите загрузку; проверьте также проблему с Imagick/GD и доступность временной директории. Не меняйте рабочую тему на стандартную сразу, если это повлияет на посетителей.
- Проверьте свободное место на хостингеВ панели хостинга откройте использование диска и квоты файлов, а по SSH проверьте
df -hиdf -iдля раздела сuploads. Если достигнут предел, освободите место после проверки резервных копий и повторите операцию; не удаляйте библиотеку медиафайлов для освобождения места. - Проверьте журнал ошибокСразу после отказа откройте журнал PHP-FPM и журнал веб-сервера для нужного сайта. Ищите
Allowed memory size exhausted,Permission denied,413, ошибкиImagickили временных файлов. Исправьте подтверждённую причину, повторите загрузку и проверьте, что WordPress создал миниатюры. - Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
#Дополнительно
Если проблема только с большими фотографиями с камеры, уменьшите их перед загрузкой до 2500 пикселей по длинной стороне. Для массовой загрузки используйте FTP или WP-CLI: wp media import /путь/*.jpg. Ограничение может быть и на уровне веб-сервера: в nginx добавьте client_max_body_size 64M; и перезагрузите конфигурацию.
#Проверка по этапам загрузки
Запрос на загрузку проходит четыре стадии: браузер отправляет файл, веб-сервер принимает его, PHP сохраняет во временную папку, WordPress переносит файл в uploads и создаёт миниатюры. Ошибка может возникнуть на любой из них. Узнайте, на какой, по косвенным признакам: если ошибка появляется сразу, до полоски прогресса, сработал лимит размера на сервере; если в конце, виноваты миниатюры и память; если ошибка только на некоторых файлах, дело в их формате или метаданных.
Проверьте и временную папку PHP: в phpinfo() найдите upload_tmp_dir — каталог должен существовать и быть доступен на запись, а на нём должно быть свободное место. Нередко на хостинге временная папка переполнена, и любая загрузка заканчивается сбоем.