
🔧 Как исправить ошибку загрузки изображения в WordPress
Ошибка загрузки изображения в WordPress бьёт в самый неподходящий момент. Готовите пост, подбираете картинку, жмёте «Загрузить», а WordPress молча показывает «HTTP Error» или отказывается сохранять файл без объяснений. И ладно бы один раз, но у некоторых админов загрузка падает стабильно раз в несколько дней.
Причина редко лежит на поверхности. Виновником может быть что угодно: слетевшие права доступа после миграции, конфликт плагинов безопасности, урезанный memory limit на дешёвом shared-тарифе или ModSecurity, который принял вашу картинку за атаку. Хорошая новость: почти все причины устраняются без программиста и без звонка в поддержку хостинга.
В этом руководстве, полная цепочка диагностики и исправления ошибки загрузки изображений. От простого (смена браузера, переименование файла) до серверного (правка php.ini, .htaccess и wp-config.php). Берите и чините, большинство кейсов закрывается за 5-10 минут.
💡 Быстрый обзор:
- Проверьте права доступа к папке
/wp-content/uploads/через FTP или cPanel File Manager: 744 для папок и 644 для файлов. - При HTTP-ошибке пройдите цепочку: очистка кеша браузера → переименование файла → сжатие → деактивация плагинов → увеличение памяти PHP → смена версии PHP.
- Для ошибок «Missing a temporary folder» и превышения лимита размера, пара строк в
wp-config.phpи.htaccess. - Пользователи GoDaddy и DreamHost, отдельные решения в конце.
Почему вообще возникает ошибка загрузки изображений
WordPress хранит все медиафайлы в /wp-content/uploads/. Чтобы записать туда картинку, PHP-процессу нужны права на запись. Если права сбиты, а это случается при обновлении сервера, миграции, смене хостинга или даже после автоматического патча PHP, загрузка падает молча.

Вторая группа причин: конфигурация PHP, а именно memory limit, параметры upload_max_filesize и post_max_size, путь к временной папке. Если любой из этих параметров не дотягивает, WordPress не пропустит файл. На дешёвых shared-тарифах хостеры часто режут буферы жёстче, чем указано в phpinfo(), и вы видите «HTTP Error» без намёка на истинную причину.

И наконец, конфликты. Плагин безопасности перехватывает POST-запрос, тема переопределяет обработку медиа, ModSecurity на уровне веб-сервера считает загрузку угрозой. Диагностика, в следующем разделе.
1. Проверьте права доступа к папке uploads
Самая частая причина, неверные права на /wp-content/uploads/. WordPress не может писать в папку и молча отказывает в загрузке. Решение: выставить правильные CHMOD через FTP.
Подключитесь к сайту через FTP-клиент, например, FileZilla. Перейдите в /wp-content/, найдите папку uploads, кликните правой кнопкой и выберите «Права доступа к файлу» (File permissions):

В открывшемся окне введите 744 в поле числового значения. Отметьте «Рекурсия по подкаталогам» (Recurse into subdirectories) и «Применить только к каталогам» (Apply to directories only). Нажмите OK.

Если 744 не решило проблему, попробуйте 755, владелец получает чтение, запись и выполнение, группа и остальные, чтение и выполнение.
Теперь права для файлов внутри uploads. Снова правый клик по папке uploads → «Права доступа к файлу». Введите 644, отметьте «Рекурсия по подкаталогам» и «Применить только к файлам» (Apply to files only). OK.

Попробуйте загрузить изображение снова. В большинстве случаев ошибка уходит сразу после этой процедуры. Не помогло, идём дальше.
2. Пройдите цепочку решений HTTP-ошибки
HTTP-ошибка при загрузке, самая неприятная, потому что WordPress не оставляет следов в логах. Просто надпись «HTTP Error», и всё. Приходится идти перебором. Ниже цепочка от простого к сложному: проходите по порядку, пока загрузка не заработает.
2.1. Обновите страницу или смените браузер
Звучит банально, но работает чаще, чем кажется. Иногда сессия WordPress истекает, и после повторного входа ошибка исчезает. Обновите страницу жёстким сбросом кеша: Ctrl+F5 на Windows, Cmd+Shift+R на Mac. Не помогло, откройте сайт в другом браузере. Если в Chrome ошибка есть, а в Firefox нет, проблема в расширениях или кеше конкретного браузера.
2.2. Очистите кеш браузера
Кеш хранит устаревшие скрипты и стили, которые могут конфликтовать с медиа-загрузчиком WordPress. Горячие клавиши для полного сброса:

- Windows (Chrome, Firefox, Edge):
Ctrl + Shift + Delete→ «Очистить данные браузера» - Mac (Chrome, Firefox):
Cmd + Shift + Delete - Safari:
Shift + клик по кнопке перезагрузки
Либо зайдите в настройки браузера и удалите кеш вручную, путь зависит от браузера, но всегда находится в разделе «История» или «Конфиденциальность».
2.3. Переименуйте файл изображения
WordPress автоматически добавляет номер к дублирующимся именам (image-1.png, image-2.png), но иногда этот механизм глючит. Переименуйте файл перед загрузкой: избегайте спецсимволов, пробелов и кириллицы в имени. Хороший формат: product-banner-01.jpg.
2.4. Сожмите изображение
Размер файла может упираться в лимит хостинга. Даже если upload_max_filesize выставлен щедро, некоторые хостеры режут буферы на меньших значениях. Сожмите картинку: для JPEG, через Imagify или TinyPNG, для PNG, через Squoosh.

Попутно проверьте формат: если загружаете .png, попробуйте конвертировать в .jpg, и наоборот. Иногда проблема привязана к конкретному формату и версии PHP-библиотеки GD или Imagick.
2.5. Деактивируйте плагины и смените тему
Плагины безопасности, Wordfence, Solid Security, Sucuri, и оптимизации изображений могут перехватывать загрузку и вызывать конфликт. Временно отключите ВСЕ плагины и переключитесь на стандартную тему, Twenty Twenty-Five или любую другую default-тему. Проверьте загрузку. Заработало, включайте плагины по одному, чтобы найти виновника.
2.6. Увеличьте лимит памяти PHP
PHP-процесс обработки изображения потребляет память. Для Full HD-скриншота в JPEG может не хватить и 64 МБ. Добавьте в wp-config.php перед строкой /* That's all, stop editing! */:
1 define( 'WP_MEMORY_LIMIT', '256M' );
2.7. Обновите версию PHP
На 2026 год WordPress рекомендует PHP 8.3 как минимальную версию, оптимально, PHP 8.4 или 8.5. На версиях 7.4 и ниже работа медиа-загрузчика не гарантирована. Путь в cPanel: раздел «Программное обеспечение» → «Выбрать версию PHP» → переключитесь на 8.4 или 8.5.

2.8. Отключите ModSecurity
ModSecurity, межсетевой экран уровня веб-сервера, который иногда принимает загрузку изображения за атаку. Добавьте в .htaccess (в корне сайта):
1 <IfModule mod_security.c> 2 SecFilterEngine Off 3 SecFilterScanPOST Off 4 </IfModule>
Не помогло, уберите эти строки обратно: проблема не в ModSecurity.
2.9. Переключите WordPress с Imagick на GD Library
WordPress использует Imagick (если модуль установлен на сервере) или GD Library для обработки изображений. У Imagick выше качество, но он потребляет больше памяти. Если WP_MEMORY_LIMIT не помог, принудительно переключите WordPress на GD. Добавьте в functions.php активной темы:
1 function wpb_image_editor_default_to_gd( $editors ) { 2 $gd_editor = 'WP_Image_Editor_GD'; 3 $editors = array_diff( $editors, array( $gd_editor ) ); 4 array_unshift( $editors, $gd_editor ); 5 return $editors; 6 } 7 add_filter( 'wp_image_editors', 'wpb_image_editor_default_to_gd' );
После этого WordPress ставит GD Library первой в цепочке, а Imagick использует как fallback.
2.10. Установите Add From Server, альтернативный способ загрузки
Если HTTP-ошибка не уходит, а файл нужно загрузить срочно, загрузите его на сервер по FTP в любую папку и импортируйте в медиабиблиотеку через Add From Server. Плагин подхватывает файлы напрямую с файловой системы, в обход стандартного загрузчика WordPress, работают файлы любого размера, ограниченные только дисковым пространством тарифа.
2.11. Обратитесь к хостинг-провайдеру
Перепробовали всё, пишите в поддержку хостинга. Опишите ошибку, приложите скриншот, укажите версию PHP и WordPress. Часто проблема решается на стороне сервера: техподдержка правит php.ini, снимает блокировку ModSecurity или перезапускает PHP-FPM.
3. Исправьте ошибку «Missing a temporary folder»
Ошибка «Missing a temporary folder» блокирует не только загрузку изображений, но и установку плагинов и обновление WordPress. Причина: PHP не может найти или записать во временную директорию.
Решение, явно указать WordPress путь к temp-папке. Откройте wp-config.php и добавьте перед финальной строкой:
1 define( 'WP_TEMP_DIR', dirname( __FILE__ ) . '/wp-content/temp/' );
Сохраните файл. Затем через FTP или cPanel File Manager создайте папку temp внутри /wp-content/ (если её нет). Права на папку, 755. Возвращайтесь в админку и пробуйте загрузку снова.
4. Поднимите лимит размера загружаемого файла
Ошибка «Uploaded file exceeds the upload_max_filesize directive» означает, что файл слишком велик для текущих настроек PHP. Три способа исправить, от простого к серверному.
4.1. Через.htaccess
Добавьте в .htaccess (корень сайта):
1 php_value upload_max_filesize 256M
Если ошибка повторилась, добавьте следом:
1 php_value post_max_size 256M 2 php_value memory_limit 512M 3 php_value max_input_time 180 4 php_value max_execution_time 180
4.2. Через wp-config.php
Добавьте в wp-config.php перед финальной строкой:
1 @ini_set( 'upload_max_filesize', '256M' ); 2 @ini_set( 'post_max_size', '256M' );
4.3. Через php.ini
Найдите php.ini на сервере, путь зависит от хостинга, обычно /etc/php/8.4/cli/php.ini или настраивается в cPanel (раздел «Select PHP Version» → «Switch to PHP Options»). Откройте, найдите директиву upload_max_filesize и замените значение:
1 upload_max_filesize = 256M 2 post_max_size = 256M
Сохраните и перезапустите PHP, через cPanel или командой в SSH. Если доступа к php.ini нет, обратитесь в поддержку хостинга.
5. Специфические решения для GoDaddy и DreamHost
GoDaddy
На shared-хостинге GoDaddy HTTP-ошибка часто связана с порядком библиотек обработки изображений. Добавьте в functions.php активной темы:
1 add_filter( 'wp_image_editors', 'change_graphic_lib' ); 2 function change_graphic_lib( $array ) { 3 return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' ); 4 }
Код принудительно ставит GD Library первой, это решает большинство случаев HTTP-ошибки именно на GoDaddy.
DreamHost
На DreamHost ошибка обычно связана с конфликтом плагинов или тем. Первым делом деактивируйте все плагины и переключитесь на стандартную тему. Удалите неиспользуемые темы и плагины, они могут оставлять мёртвые хуки, мешающие загрузчику. Не помогло, обратитесь в поддержку DreamHost: у них кастомная серверная конфигурация, и техподдержка знает специфику.
Что делать, если ошибка повторяется снова и снова
Если вы прошли всю цепочку, а загрузка всё равно падает раз в неделю, проблема глубже, чем права доступа или лимит PHP. Скорее всего, виноват хостинг с жёсткими серверными ограничениями (дешёвый shared-тариф) либо криво написанный плагин, который перезаписывает настройки медиа-загрузчика при каждом обновлении.
Первым делом исключите плагины: отключите всё на сутки и последите за поведением загрузчика. За сутки ни одного сбоя, включайте плагины по одному с интервалом в день, пока не найдёте виновника.
Не нашли, меняйте хостинг. Серьёзно. Дешёвые shared-тарифы экономят на памяти PHP и подрезают буферы так, что никакие правки .htaccess не помогут. Для стабильной работы WordPress с медиафайлами нужен VPS или качественный managed-хостинг с memory_limit от 256M и max_execution_time от 120 секунд.
Альтернативный обходной путь, загружать изображения через FTP и импортировать через Add From Server. Медленнее, чем родной загрузчик, но работает на любом хостинге и не зависит от PHP-лимитов.
⁉️🤔 Частые вопросы
Почему ошибка загрузки возникает без видимых причин?
Хостинг-провайдеры регулярно обновляют серверное ПО: минорные патчи PHP, Apache, конфигурацию ModSecurity. Меняются пути, версии, настройки, и права доступа к
/wp-content/uploads/слетают. Вы ничего не трогали, а загрузка перестала работать. Решение: перевыставить права 744/755 на папку и 644 на файлы внутри/wp-content/uploads/и проверить лимиты PHP.
Что делать, если ничего из статьи не помогло?
Включите
WP_DEBUGвwp-config.php:define( 'WP_DEBUG', true );и повторите загрузку. WordPress запишет конкретную ошибку в/wp-content/debug.log. Вы увидите точный PHP-фатал или warning: чаще всего, нехватка памяти (allowed memory size exhausted), недоступность временной папки (failed to open dir) или конфликт конкретного плагина. С этой информацией поддержка хостинга решит вопрос в разы быстрее.
Как загрузить очень большой файл, если хостинг не даёт поднять лимит?
Используйте FTP + плагин Add From Server. Загрузите файл на сервер вручную по FTP в папку
/wp-content/uploads/import/(или любую другую), затем через плагин импортируйте в медиабиблиотеку. Add From Server подхватывает файлы напрямую с файловой системы сервера, в обход HTTP-загрузчика и всех его лимитов. Работает для файлов любого размера, единственное ограничение: дисковое пространство тарифа. Для пакетной загрузки создайте папку/wp-content/uploads/bulk-import/и заливайте туда сразу всё через FTP.
Можно ли навсегда предотвратить ошибку загрузки изображений?
Полностью исключить нельзя, но риск сводится к минимуму. Держите PHP на актуальной версии, 8.4 или 8.5 в 2026 году,
memory_limitне ниже 256M. Не ставьте плагины безопасности с агрессивными настройками по умолчанию. Раз в полгода проверяйте права на/wp-content/uploads/. После каждого обновления ядра WordPress или PHP делайте тестовую загрузку изображения. Настроен автоматический бэкап, откат займёт 5 минут. И держите под рукой FTP-доступ: без него половина решений из этой статьи недоступна.
Обязательно ли использовать FTP для исправления прав доступа?
Нет. Альтернатива, File Manager в cPanel (или аналог вашего хостинга). Заходите в File Manager →
/wp-content/→ правый клик по папкеuploads→ Change Permissions → выставляете 744. Логика та же, интерфейс чуть другой. cPanel File Manager работает с правами точно так же, как FTP-клиент: всё делается в браузере, отдельный софт не нужен. Для пользователей, которым FTP-клиент кажется сложным, это самый доступный способ исправить права за две минуты.
Ошибка загрузки исправлена, что дальше?
Вы прошли цепочку, загрузка работает. Теперь, профилактика, чтобы не возвращаться к этой проблеме через месяц. Три вещи, которые имеет смысл сделать сразу:
- Запишите рабочие настройки. Те права (744/755), лимиты PHP (256M), версия PHP (8.4+), сохраните себе в заметки. При следующей миграции или обновлении сервера вы восстановите их за минуту, а не за час перебора.
- Настройте мониторинг дискового пространства. Половина «внезапных» ошибок загрузки, это закончившееся место на диске. WordPress молча отказывает в записи, а вы гадаете. Бесплатные плагины вроде WP Health проверяют свободное место и присылают уведомление на почту до того, как диск заполнится.
- Проверьте логи раз в месяц.
/wp-content/debug.log(если включилиWP_DEBUG) покажет зарождающуюся проблему задолго до того, как она станет блокирующей. Пара минут в месяц экономят часы внепланового ремонта.
Остались вопросы или столкнулись с нетипичным кейсом? Опишите ситуацию в комментариях, разберёмся.



