Перейти к содержимому
Конфигурация

Как увеличить лимит загрузки файлов в 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.
Экран Upload Media в WordPress со строкой Maximum upload file size: 2 GB под областью загрузки
Где лимит виден на экране загрузки: под областью загрузки. 2 GB — значение нашего тестового сервера; многие хостинги ставят намного меньше.
Site Health Info в WordPress, раздел Media Handling, со значениями max size of post data allowed, max size of an uploaded file и max effective file size
Инструменты > Здоровье сайта > Информация > Обработка медиафайлов на нашем тестовом сайте: лимиты данных записи, загружаемого файла и эффективный лимит идут отдельными строками.

WordPress вычисляет свой лимит в wp_max_upload_size(): функция читает upload_max_filesize и post_max_size из PHP и берёт меньшее. Если одно из них 64M, а другое 8M, ваш лимит 8M.

Шаг 2: Разберитесь, какие настройки важны

НастройкаЧто ограничиваетПо умолчанию в PHPГде можно изменить
upload_max_filesizeСамый большой отдельный загружаемый файл2Mphp.ini, .user.ini, .htaccess, httpd.conf
post_max_sizeВесь POST-запрос вместе с файлом8Mphp.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)Тело запроса, которое примет Nginx1mТолько в конфигурации 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
Хостинг с cPanelSoftware > MultiPHP INI EditorСам записывает php.ini, .user.ini или .htaccess
Nginx перед PHPclient_max_body_size плюс значения PHPИначе Nginx возвращает 413
Управляемый WordPress-хостингПанель хостинга или поддержкаМногие ограничивают загрузку на уровне платформы
Сайт за CloudflareСобственный лимит загрузки Cloudflare100 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, лимит останется прежним.