
🔧 Як виправити помилку завантаження зображення в 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 шлях до тимчасової папки. Відкрийте 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) покаже зароджувану проблему задовго до того, як вона стане блокуючою. Пара хвилин на місяць економлять години позапланового ремонту.
Залишилися запитання або зіткнулися з нетиповим кейсом? Опишіть ситуацію в коментарях, розберемося.



