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. Именно поэтому инструмент спрашивает тип сервера и показывает, какой блок вам действительно поможет.

Частые вопросы