
⚙️ Як виправити помилку «Завантажений файл перевищує директиву upload_max_filesize» у php.ini
Ви завантажуєте тему, плагін або зображення в медіатеку WordPress і бачите червоний рядок: «Завантажений файл перевищує директиву upload_max_filesize у php.ini». Файл важить 10 мегабайт, а WordPress його не пропускає. Знайома ситуація для кожного, хто адмініструє сайт.
Проблема не у WordPress і не у вашому файлі. Хостинг-провайдери обмежують розмір завантажуваних файлів на рівні PHP, і стандартний ліміт у 2 мегабайти не змінювався роками. Ви можете підняти його за п’ять хвилин будь-яким із п’яти способів нижче, від найпростішого до більш просунутого.
💡 Швидкий огляд:
- Збільште ліміт через wp-config.php, один виклик
ini_set, працює на більшості хостингів - Змініть налаштування в cPanel через MultiPHP INI Editor, якщо хост використовує cPanel
- Створіть або відредагуйте php.ini через FTP, метод працює незалежно від панелі керування
- Додайте директиви в.htaccess, коли немає доступу до php.ini
- У крайньому разі пропишіть
@ini_setу functions.php дочірньої теми
Звідки береться обмеження upload_max_filesize
Директива upload_max_filesize міститься у конфігураційному файлі php.ini, головному файлі налаштувань PHP на вашому сервері. Вона визначає максимальний розмір одного завантажуваного файлу. Типове значення становить 2 мегабайти, цього достатньо для невеликих зображень, але тема WordPress або відеоролик у такі рамки не вкладаються.
Поруч із нею працюють ще дві директиви: post_max_size (загальний розмір POST-запиту, типово 8 МБ) і memory_limit (доступна скрипту пам’ять, типово 128 МБ). Усі три пов’язані: підняли upload_max_filesize, перевірте, що post_max_size не менший за нове значення, інакше обмеження залишиться на попередньому рівні.
Перевірити поточні ліміти можна прямо з адмінки WordPress: перейдіть у Медіафайли → Додати новий і подивіться на рядок під областю завантаження, там указано максимальний розмір. Як альтернативу встановіть плагін PHP Info і знайдіть потрібні директиви у виводі phpinfo().
1. Збільште ліміт через wp-config.php
Найшвидший спосіб, який працює на більшості shared-хостингів. Файл wp-config.php знаходиться в кореневій папці сайту й завантажується до виконання будь-якого коду WordPress, тому директиви ini_set у ньому мають пріоритет.
Підключіться до сервера через FTP-клієнт (FileZilla, безплатний і надійний варіант) або відкрийте Файловий менеджер у панелі керування хостингом. Знайдіть wp-config.php у кореневій папці (зазвичай public_html):

Додайте наступні рядки в кінець файлу, перед коментарем /* That's all, stop editing! */:
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Збережіть файл і оновіть сторінку медіатеки WordPress. Ліміт завантаження має змінитися на 64 мегабайти. Якщо число не змінилося, хостинг-провайдер заблокував ini_set, переходьте до наступного способу.
2. Змініть налаштування через MultiPHP INI Editor у cPanel
Якщо ваш хост використовує cPanel, вбудований редактор MultiPHP INI Editor дає змогу змінювати налаштування PHP без ручної роботи з файлами. Він автоматично застосовує значення до вибраного сайту й перезаписує хостингові типові значення.
Увійдіть у cPanel і знайдіть розділ Software → MultiPHP INI Editor:

Виберіть потрібний сайт зі спадного списку вгорі сторінки. Прокрутіть униз до директиви upload_max_filesize і введіть нове значення (наприклад, 64M). Нижче знайдіть post_max_size і встановіть його трохи більшим, 80M. Натисніть Apply. Зміни набувають чинності миттєво.
Цей спосіб кращий за перший: cPanel сам стежить за синтаксисом, і налаштування не скидаються після оновлення WordPress.
3. Відредагуйте php.ini через FTP
Якщо доступу до cPanel немає або хост не підтримує MultiPHP INI Editor, працюйте безпосередньо з файлом php.ini. Він керує всіма налаштуваннями PHP, і зміна в ньому, найнадійніший спосіб підняти ліміти.
Підключіться до сервера через FTP і перейдіть у кореневу папку сайту. Знайдіть файл php.ini. Якщо його немає (на shared-хостингах користувацький php.ini часто відсутній), створіть новий текстовий файл із такою назвою:

Додайте у файл наступні директиви:
1 upload_max_filesize = 64M 2 post_max_size = 80M 3 memory_limit = 256M 4 file_uploads = On 5 max_execution_time = 300 6 max_input_time = 300
Збережіть файл. Щоб зміни застосувалися, деяким хостинг-провайдерам потрібна директива suPHP у файлі .htaccess. Додайте в .htaccess блок:
1 <IfModule mod_suphp.c> 2 suPHP_ConfigPath /home/yourusername/public_html 3 </IfModule>
Замініть yourusername на ім’я користувача вашого хостинг-акаунта. Якщо після додавання цього блоку сайт упав із помилкою, видаліть блок: ваш сервер працює на CGI, і suPHP не потрібен.
На локальних серверах шлях до php.ini залежить від платформи: XAMPP (Windows): C:\xampp\php\php.ini; MAMP (macOS): /Applications/MAMP/conf/php/php.ini; LAMP (Linux): /etc/php/версия/apache2/php.ini. Після редагування перезапустіть вебсервер.
4. Додайте директиви в.htaccess
Коли хостинг-провайдер заблокував доступ до php.ini, а ini_set не працює, останній рубіж на рівні сервера, файл .htaccess. Він дає змогу задавати налаштування PHP для конкретної папки сайту через директиви php_value.
Під’єднайтеся через FTP і знайдіть .htaccess у кореневій папці. Завантажте резервну копію на комп’ютер (обов’язково!). Потім додайте в кінець файлу такі рядки:

1 php_value upload_max_filesize 64M 2 php_value post_max_size 80M 3 php_value memory_limit 256M 4 php_value max_execution_time 300 5 php_value max_input_time 300
Збережіть .htaccess і оновіть сайт. Якщо замість сайту з’являється помилка 500 Internal Server Error, ваш сервер працює на CGI, і директива php_value у .htaccess не підтримується. Видаліть додані рядки, щоб відновити сайт, і скористайтеся способом 3 (створення php.ini).
Помилку 500 та її різновид 502 ми докладно розбирали в посібнику з виправлення серверних помилок WordPress.
5. Пропишіть @ini_set у functions.php теми
Спосіб для ситуацій, коли всі попередні методи недоступні або ви хочете тримати налаштування в репозиторії теми. Додайте код у файл functions.php дочірньої теми: він виконується під час кожного запиту й перевизначає ліміти на льоту.
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Код розмістіть у кінці functions.php, але перед закриваючим ?> (якщо він є). Використовуйте дочірню тему: під час оновлення батьківської теми правки в functions.php основної теми скидаються, дочірня тема переживає оновлення без втрат.
Після додавання коду перевірте ліміт у медіатеці WordPress. Зважте, що на деяких хостингах ini_set для upload_max_filesize заблоковано на рівні PHP (директива PHP_INI_SYSTEM не дозволяє змінювати значення під час виконання). У такому разі @ini_set мовчки проігнорується, і вам потрібен спосіб 3 або 4.
Чому ліміт не змінився: діагностика
Зробили все за інструкцією, а обмеження лишилося попереднім? Пройдіть цей чекліст:
post_max_sizeменший за новийupload_max_filesize. Це найчастіша причина:post_max_sizeмає бути не меншим, а бажано на 20-30% більшим за значенняupload_max_filesize: документація PHP прямо вимагаєpost_max_size≥upload_max_filesize. Пакетне завантаження кількох файлів і поля форми враховуються вpost_max_size.- Файл створено не в тій папці. PHP шукає
php.iniу директорії скрипту, потім підіймається деревом до кореня сервера. Покладітьphp.iniу корінь сайту (public_html), а не в підпапку. - Кеш PHP (OPcache) зберігає стару конфігурацію. Деякі сервери кешують
php.ini. Перезапустіть PHP через панель хостингу або зачекайте 5-10 хвилин, поки кеш інвалідується. - Сервер на CGI/FastCGI ігнорує
.htaccess. Змініть підхід: використовуйтеphp.ini(спосіб 3) абоuser.iniдля FastCGI. - Хостинг-провайдер жорстко зафіксував ліміт. На наддешевих тарифах ліміт завантаження фіксований і не змінюється жодним способом, окрім зміни тарифу.
Якщо жоден із перелічених пунктів не допоміг, зверніться до підтримки хостингу. Назвіть домен, метод, яким ви змінювали ліміт, і попросіть перевірити, чи дозволено перевизначення upload_max_filesize на вашому тарифі.
Відеоінструкція
Покроковий процес виправлення помилки від діагностики до фінальної перевірки дивіться в цьому відео:
⁉️🤔 Часті запитання
Яке значення upload_max_filesize обрати?
Для більшості сайтів достатньо 64 МБ — це покриває завантаження тем, плагінів і зображень високої роздільної здатності. Якщо ви працюєте з відеофайлами або великими ZIP-архівами через адмінку, ставте 128-256 МБ. Не женіться за гігабайтами без причини: що вищий ліміт, то більше пам’яті резервує сервер під кожен запит завантаження.
Чи можна завантажити файл в обхід ліміту?
Так, через FTP. FTP-клієнт підключається до сервера напряму і не проходить через PHP-обробник, тому ліміти
upload_max_filesizeна нього не діють. Завантажте файл уwp-content/uploadsчерез FTP, а потім зареєструйте його в медіатеці WordPress плагіном Add From Server.
Чим відрізняється upload_max_filesize від post_max_size?
upload_max_filesize— це максимальний розмір одного файлу під час завантаження.post_max_size— це загальний розмір усього POST-запиту, включно з усіма файлами, полями форми та службовими заголовками. Якщо ви завантажуєте три файли по 20 МБ,upload_max_filesizeмає бути ≥ 20 МБ, аpost_max_size, ≥ 60 МБ плюс запас на форму. Томуpost_max_sizeзавжди встановлюють більшим заupload_max_filesize.
Чому ліміти скидаються після оновлення WordPress?
WordPress не чіпає серверні налаштування PHP під час оновлення, але якщо ви правили
wp-config.phpабоfunctions.phpосновної теми, оновлення ядра/теми могло перезаписати ці файли. Завжди тримайте кастомні налаштування PHP уphp.ini, cPanel MultiPHP INI Editor або дочірній темі, ці локації не зачіпаються оновленнями.
Чи потрібно перезавантажувати сервер після зміни php.ini?
Для shared-хостингу та cPanel, ні, зміни застосовуються протягом кількох хвилин автоматично. Для VPS і виділеного сервера з PHP-FPM перезапустіть сервіс:
sudo systemctl restart php-fpm(абоphp8.3-fpm, залежно від версії). Apache з mod_php зазвичай підхоплює зміни без перезапуску.
Що робити, якщо ліміт все одно не підвищується
П’ять способів вище закривають практично будь-який хостинг-сценарій. Від банального wp-config.php до functions.php дочірньої теми, ви пройшли весь ланцюжок. Якщо після чесного виконання кожного пункту та діагностики обмеження залишилося на місці, причина в жорсткій політиці хостинг-провайдера, і без зміни тарифу або хостера її не обійти.
Зв’яжіться з підтримкою та прямо запитайте, чи дозволено перевизначення upload_max_filesize на вашому тарифному плані. Відповідь «ні», привід замислитися про перехід на VPS або гнучкіший shared-тариф, де ви контролюєте налаштування PHP без огляду на сусідів по серверу. У проміжку заливайте великі файли через FTP: обмежень за розміром там немає, а в медіатеку їх підхопить Add From Server.



