upload_max_filesize и post_max_size: как увеличить размер загрузки
Размер загрузки в PHP ограничивают две настройки: upload_max_filesize — один файл, по умолчанию 2 МБ, и post_max_size — вся форма, 8 МБ. Для сайта на nginx есть третий лимит — client_max_body_size, 1 МБ. Поднимать нужно все три.
Содержание 7
Что сделать прямо сейчас
- Команды вводятся на сервере: подключитесь к нему по SSH ([как подключиться](/instrukcii/kak-podklyuchitsya-k-vps-po-ssh/)) и набирайте их в том же окне.
- Откройте файл настроек PHP для сайта:
sudo nano /etc/php/8.3/fpm/php.ini. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter. - Нажмите Ctrl+W, введите
upload_max_filesizeи нажмите Enter — курсор встанет на строку с этой настройкой. Впишите новое значение:upload_max_filesize = 64M. - Так же найдите
post_max_sizeи впишитеpost_max_size = 80M: этот лимит должен быть больше, ведь в форме кроме файла есть и другие данные. - Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
- Перезапустите PHP-FPM:
sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен. - Поднимите лимит nginx: строка
client_max_body_size 80m;— как это сделать. - Проверьте:
php-fpm8.3 -i | grep -E 'upload_max_filesize|post_max_size'— в ответе будут обе настройки с новыми значениями.
64M и 80M — пример: ставьте под свои файлы. Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.
Какие лимиты бывают
| Где | Настройка | По умолчанию | Что ограничивает |
|---|---|---|---|
| nginx | client_max_body_size | 1 МБ | весь запрос |
| PHP | post_max_size | 8M | всю форму вместе с файлами |
| PHP | upload_max_filesize | 2M | каждый файл |
| PHP | max_file_uploads | 20 | сколько файлов за один раз |
Запрос проходит лимиты по порядку: сначала nginx, потом PHP. По тому, какой лимит сработал, видно, что поднимать.
| Что видите | Какой лимит сработал |
|---|---|
| страница с кодом 413 | client_max_body_size в nginx |
форма пришла пустой, в журнале POST Content-Length of … bytes exceeds the limit | post_max_size |
файл не сохранился, в журнале upload_max_filesize of … bytes exceeded | upload_max_filesize |
часть файлов не загрузилась, в журнале Maximum number of allowable file uploads has been exceeded | max_file_uploads |
Журнал ошибок PHP для сайта на nginx — журнал nginx: sudo tail -n 30 /var/log/nginx/error.log.
Почему post_max_size больше
post_max_size ограничивает весь запрос: файл, остальные поля формы и служебные строки между ними. Если он равен upload_max_filesize, файл ровно на пределе уже не пройдёт. Справка PHP прямо говорит: post_max_size должен быть больше upload_max_filesize. Если форма загружает несколько файлов сразу, post_max_size должен вмещать их все.
client_max_body_size в nginx ставьте не меньше post_max_size — иначе nginx отклонит запрос раньше, чем до него дойдёт PHP.
Только для одного сайта
Только для одного сайта — строкой php_admin_value[upload_max_filesize] = 64M в пуле PHP-FPM или строкой upload_max_filesize = 64M в файле .user.ini: как это сделать. post_max_size задают так же.
Функция ini_set() эти лимиты не меняет: PHP принимает файл до того, как запустится код сайта.
Для WordPress — разбор с сообщениями WordPress.
На виртуальном хостинге
Лимиты загрузки меняют в панели хостинга, в разделе с настройками PHP. Если там их нет или максимум мал, спросите поддержку.
Источники
- Справка PHP: настройки ядра — memory_limit -1 снимает лимит; post_max_size должен быть больше upload_max_filesize.
- Справка PHP: список настроек — значения по умолчанию и где можно менять каждую настройку: INI_ALL, INI_PERDIR или INI_SYSTEM.
- Файл php.ini-production из PHP 8.3.6 — значения для рабочих серверов: display_errors Off, log_errors On, max_execution_time 30, post_max_size 8M, upload_max_filesize 2M.
- Исходный код PHP 8.3.6: rfc1867.c — тексты upload_max_filesize of … bytes exceeded и Maximum number of allowable file uploads has been exceeded.
- nginx: client_max_body_size — по умолчанию 1m; если тело запроса больше, nginx отвечает 413.
Сверено 14 октября 2026 года.
Что почитать дальше
- 413 Request Entity Too Largeлимит nginx на размер запроса.
- POST Content-Length exceeds the limitформа пришла пустой.
- Файл больше upload_max_filesize в WordPressто же для WordPress.
- Настройки PHPглавные настройки и где их задают.