Как увеличить лимит загрузки файлов в WordPress: 4 шага
Проверьте текущий лимит загрузки в WordPress и увеличьте его в нужном месте для вашего хостинга: php.ini, .user.ini, .htaccess, cPanel, Nginx или Cloudflare.
Чтобы увеличить лимит загрузки в WordPress, поднимите две настройки PHP, upload_max_filesize и post_max_size, в том файле конфигурации, который ваш хостинг действительно читает. Это php.ini на сервере, которым вы управляете, .user.ini на большинстве виртуальных хостингов с PHP-FPM или FastCGI, .htaccess только когда Apache запускает PHP как модуль, или MultiPHP INI Editor в cPanel. Если сервер работает на Nginx, увеличьте ещё и client_max_body_size. Правка wp-config.php лимит загрузки не изменит.
Инструмент максимального размера загрузки WordPress превращает один целевой размер в подходящие значения для php.ini (или .user.ini), .htaccess и wp-config.php, чтобы вы вставили их, а не набирали вручную.
Шаг 1: Проверьте текущий лимит загрузки
Прежде чем что-то менять, узнайте, какой лимит сейчас и какая настройка его задаёт.
- «Медиафайлы > Добавить новый». На экране загрузки указан максимальный размер загружаемого файла. Это и есть число, которое вы хотите увеличить.
- «Инструменты > Здоровье сайта > Информация». Раскройте раздел обработки медиафайлов. Документация по здоровью сайта перечисляет, что там показано: максимальный разрешённый размер данных POST, максимальный размер загружаемого файла и максимальный эффективный размер файла, то есть меньшее из двух. Раздел «Сервер» показывает другие значения PHP.


WordPress вычисляет свой лимит в wp_max_upload_size(): функция читает upload_max_filesize и post_max_size из PHP и берёт меньшее. Если одно из них 64M, а другое 8M, ваш лимит 8M.
Шаг 2: Разберитесь, какие настройки важны
| Настройка | Что ограничивает | По умолчанию в PHP | Где можно изменить |
|---|---|---|---|
upload_max_filesize | Самый большой отдельный загружаемый файл | 2M | php.ini, .user.ini, .htaccess, httpd.conf |
post_max_size | Весь POST-запрос вместе с файлом | 8M | php.ini, .user.ini, .htaccess, httpd.conf |
memory_limit | Память, которую PHP может использовать при работе | 128M | Где угодно, включая wp-config.php |
max_execution_time | Сколько секунд может работать скрипт | 30 | Где угодно, включая wp-config.php |
client_max_body_size (Nginx) | Тело запроса, которое примет Nginx | 1m | Только в конфигурации Nginx |
Значения PHP по умолчанию и режимы изменения взяты из списка директив php.ini, значение Nginx по умолчанию из документации модуля core Nginx. Большинство хостингов ставят значения выше стандартных для PHP, поэтому реальные цифры смотрите в «Здоровье сайта».
upload_max_filesize и post_max_size относятся к тому, что PHP называет настройками INI_PERDIR: их «можно задать в php.ini, .htaccess, httpd.conf или .user.ini» и больше нигде. memory_limit не ограничивает размер файла, но WordPress нужна память, чтобы создавать уменьшенные копии больших изображений, поэтому крупная загрузка всё равно может завершиться ошибкой нехватки памяти уже после того, как файл дошёл.
Шаг 3: Увеличьте лимит в нужном месте для вашего хостинга
| Ваша конфигурация | Где задавать | Примечания |
|---|---|---|
| VPS или выделенный сервер | Тот php.ini, который реально загружает PHP | Затем перезапустите PHP-FPM или Apache |
| Виртуальный хостинг с PHP-FPM или FastCGI | .user.ini в корне WordPress | Применение может занять до 5 минут |
| Apache с PHP как модулем (mod_php) | .htaccess с php_value | При PHP-FPM или FastCGI вызывает ошибку 500 |
| Хостинг с cPanel | Software > MultiPHP INI Editor | Сам записывает php.ini, .user.ini или .htaccess |
| Nginx перед PHP | client_max_body_size плюс значения PHP | Иначе Nginx возвращает 413 |
| Управляемый WordPress-хостинг | Панель хостинга или поддержка | Многие ограничивают загрузку на уровне платформы |
| Сайт за Cloudflare | Собственный лимит загрузки Cloudflare | 100 MB на тарифах Free и Pro |
php.ini (сервер под вашим управлением)
Сначала найдите загружаемый файл. Создайте временный файл с содержимым <?php phpinfo();, откройте его в браузере, прочитайте строку «Loaded Configuration File» и удалите файл. Отредактируйте этот php.ini:
upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300
Затем перезапустите PHP, чтобы он прочитал изменения. В PHP-FPM имя службы содержит версию, например sudo systemctl restart php8.3-fpm в Debian или Ubuntu. С mod_php перезапустите Apache.
.user.ini (большинство виртуальных хостингов)
PHP читает файлы .user.ini только в режиме CGI или FastCGI, к которому относится и PHP-FPM. Создайте или отредактируйте .user.ini в папке, где лежит wp-config.php:
upload_max_filesize = 128M
post_max_size = 130M
PHP перечитывает эти файлы каждые user_ini.cache_ttl секунд, по умолчанию 300. Подождите пять минут, прежде чем решить, что не сработало, или перезапустите PHP-FPM, если можете.
.htaccess (только Apache с mod_php)
php_value upload_max_filesize 128M
php_value post_max_size 130M
Руководство PHP описывает эти директивы для PHP, работающего как модуль Apache. Если сразу после сохранения сайт показывает 500 Internal Server Error, PHP работает как FastCGI или PHP-FPM. Удалите эти строки и используйте .user.ini.
cPanel MultiPHP INI Editor
В cPanel откройте Software > MultiPHP INI Editor, выберите домен и измените значения в Basic Mode. Согласно документации cPanel, Basic Mode сохраняет настройки в файлы php.ini, .user.ini и .htaccess там, где каждый из них поддерживает настройку, так что знать, какой из них использует ваш сервер, не нужно.
Nginx
Nginx проверяет размер запроса раньше, чем его увидит PHP. Когда запрос больше client_max_body_size, Nginx возвращает 413 Request Entity Too Large. По умолчанию значение 1m. Добавьте в блок server значение не меньше post_max_size:
client_max_body_size 130M;
Проверьте и перезагрузите конфигурацию командой sudo nginx -t && sudo systemctl reload nginx. В Apache аналогичная настройка LimitRequestBody, её на обычном WordPress-хостинге менять приходится редко.
Управляемые хостинги и Cloudflare
Некоторые управляемые WordPress-хостинги игнорируют ваш php.ini или .user.ini и задают лимит для всей платформы. Если после изменения «Здоровье сайта» показывает старое число, спросите у хостинга, какой максимум и могут ли его поднять.
Если сайт работает через Cloudflare, у Cloudflare свой лимит. В его документации по кешу указаны максимальные размеры загрузки: 100 MB на тарифах Free и Pro, 200 MB на Business и до 5 GB на Enterprise. Никакая настройка PHP это не обойдёт.
Почему wp-config.php не работает
Многие статьи советуют добавить в wp-config.php:
@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '130M' );
Обе настройки имеют режим INI_PERDIR, а документация PHP говорит, что такие настройки нельзя задать через ini_set(). Символ @ скрывает ошибку, поэтому строки выглядят безобидно и ничего не меняют. Через wp-config.php можно изменить память, потому что memory_limit задаётся где угодно:
define( 'WP_MEMORY_LIMIT', '256M' );
Это помогает, когда большие изображения падают при обработке. Максимальный размер загружаемого файла это не меняет.
Шаг 4: Проверьте результат
Обновите «Медиафайлы > Добавить новый» и посмотрите, показан ли новый максимальный размер загружаемого файла. Если нет:
- Убедитесь, что
post_max_sizeне меньшеupload_max_filesize. WordPress берёт меньшее значение. - Проверьте, что вы правили файл, который PHP действительно загружает.
php.iniв другой папке игнорируется. - Подождите пять минут после изменения
.user.iniили перезапустите PHP-FPM. - Если число в WordPress изменилось, а загрузки всё ещё падают с 413, блокировка находится в Nginx, прокси хостинга или Cloudflare.
- Если файл доходит до WordPress и потом появляется «Ошибка HTTP», проблема уже не в размере. Наше руководство по ошибке HTTP при загрузке изображений в WordPress разбирает частые причины.
Какое значение ставить?
Ставьте лимит под самый большой файл, который вам действительно нужно загружать, с небольшим запасом, и держите post_max_size чуть выше upload_max_filesize. Большие файлы ещё и загружаются дольше, поэтому увеличьте max_execution_time, если крупные файлы не успевают загрузиться на медленном соединении. Для очень больших файлов, например длинных видео или архивов резервных копий, загрузка по SFTP или плагином с загрузкой по частям обычно надёжнее одной огромной загрузки через браузер, а лимит тарифа Cloudflare может и вовсе исключить путь через браузер.
Когда целевое значение известно, инструмент максимального размера загрузки напишет подходящие строки PHP за вас. Если сервер работает на Nginx, добавьте строку для Nginx из этого руководства сами.
FAQ
Вопросы
Как проверить текущий лимит загрузки в WordPress?
Откройте «Медиафайлы > Добавить новый». На экране загрузки указан максимальный размер загружаемого файла. Подробности смотрите в «Инструменты > Здоровье сайта > Информация» в разделе обработки медиафайлов: там указаны максимальный размер загружаемого файла, максимальный размер данных POST и максимальный эффективный размер файла, то есть меньшее из двух значений.
Почему WordPress пишет, что загруженный файл превышает директиву upload_max_filesize в php.ini?
Файл больше, чем настройка PHP upload_max_filesize. WordPress не задаёт этот лимит, а читает его из PHP. Увеличьте upload_max_filesize и post_max_size вместе в php.ini, .user.ini или, на Apache с mod_php, в .htaccess. Значение upload_max_filesize по умолчанию в самом PHP всего 2M, хотя большинство хостингов ставят больше.
Можно ли увеличить лимит загрузки через wp-config.php?
Нет. upload_max_filesize и post_max_size это настройки PHP_INI_PERDIR, которые PHP принимает только из php.ini, .htaccess, httpd.conf или .user.ini. Строка ini_set() в wp-config.php выполнится без ошибки и ничего не изменит. Через wp-config.php можно поднять лимит памяти WordPress, но размер файла ограничивает не память.
Почему после увеличения лимитов PHP я всё ещё получаю 413 Request Entity Too Large?
Запрос отклоняет что-то, что стоит перед PHP. В Nginx это client_max_body_size, по умолчанию 1m; при превышении Nginx возвращает ошибку 413. Увеличьте значение в блоке server и перезагрузите Nginx. Если сайт работает через Cloudflare, лимит размера загрузки на вашем тарифе тоже может остановить запрос до того, как он дойдёт до сервера.
Должен ли post_max_size быть больше upload_max_filesize?
Он должен быть не меньше, а чуть больше надёжнее. Файл отправляется в POST-запросе вместе с другими данными формы, поэтому весь запрос учитывается в post_max_size. WordPress берёт меньшее из двух значений как лимит загрузки, поэтому если поднять только upload_max_filesize, лимит останется прежним.