Skip to content

Все для WordPress, веб-розробки — і не тільки

Ліміт завантаження файлів у WordPress: скільки і де змінити

Вкажіть, файли якого розміру треба заливати — інструмент розрахує узгоджений набір значень і покаже, який спосіб спрацює саме на вашому типі сервера. Все обчислюється у браузері, нічого нікуди не надсилається.

Скільки має важити найбільший файл, який ви плануєте заливати.
Медіатека WordPress шле файли по одному. Кастомні форми з кількома полями — одним запитом.
Не знаєте — подивіться phpinfo(), рядок Server API: Apache 2.0 Handler = mod_php, FPM/FastCGI = PHP-FPM, LiteSpeed = LSAPI.
ДирективаНавіщо саме таке значенняЗначення


    
Чому не спрацювало: чекліст Значення записані, а ліміт лишився старим — майже завжди це один із дев’яти пунктів нижче.

Жорсткий ліміт хостера. Значення вище дозволеного тарифом мовчки обрізається: у файлі 512M, у phpinfo()64M. Лікується тільки зверненням у підтримку.

Правили не той php.ini. Активний файл названо у phpinfo() рядком Loaded Configuration File; поруч Additional .ini files parsed — їх теж читають, і вони можуть перевизначати ваші значення.

LimitRequestBody в Apache. Ліміт самого веб-сервера, у байтах, у vhost або .htaccess. Ріже тіло запиту раніше за PHP — користувач бачить 413, а в логах PHP порожньо.

Процес PHP не перезапущено. php.ini читається один раз при старті. Для PHP-FPM перезапускати треба саме FPM — рестарт nginx чи Apache не перечитує пул.

.user.ini підхоплюється не миттєво. PHP кешує його на user_ini.cache_ttl секунд (типово 300). Почекайте 5 хвилин або перезапустіть FPM.

OPcache. Сам php.ini він не кешує, але кешує ваш wp-config.php із @ini_set. Після правки — opcache_reset() або перезапуск процесу.

Проксі попереду. Cloudflare на безкоштовному тарифі ріже завантаження на 100 МБ; балансувальник, Engintron чи nginx перед Apache мають власний client_max_body_size.

Ліміт із боку WordPress. Multisite: Мережа → Налаштування → Максимальний розмір файлу (у КБ). Плюс фільтр upload_size_limit, який ставлять деякі теми й security-плагіни.

Тимчасова тека. Якщо upload_tmp_dir недоступна для запису або на розділі скінчилось місце — файл не долітає без виразної помилки. Перевірте sys_get_temp_dir() і вільне місце.

Розрахунок виконується у вашому браузері — жодні дані про сервер нікуди не надсилаються.

Чому зміни одного upload_max_filesize майже ніколи не досить

Розмір завантаження обмежують щонайменше чотири незалежні значення, і спрацьовує найменше з них. upload_max_filesize — розмір одного файлу. post_max_size — розмір усього POST-запиту. Має бути більшим за upload_max_filesize, інакше файл ріжеться ще до перевірки першого ліміту. memory_limit — має вміщати весь запит; для WordPress мінімум 256M. client_max_body_size — ліміт nginx. Про нього забувають найчастіше: PHP уже все дозволяє, а nginx віддає 413 Request Entity Too Large. Окрема пастка — спосіб. Директиви php_value у .htaccess працюють ТІЛЬКИ коли PHP підключений як модуль Apache (mod_php). На сучасних хостингах PHP майже завжди працює як FPM, і тоді такий рядок або мовчки ігнорується, або дає 500 Internal Server Error. Саме тому інструмент питає тип сервера і показує, який блок вам справді допоможе.

Часті питання