#Что означает сообщение
Файл слишком большой
Увеличьте upload_max_filesize, post_max_size и client_max_body_size.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| upload_max_filesize | Код UPLOAD_ERR_INI_SIZE в PHP | Установить согласованный upload_max_filesize |
| post_max_size | Тело больше post_max_size и поля пусты | Установить лимит POST с запасом |
| Лимит nginx | HTTP 413 до запуска PHP | Проверить client_max_body_size Nginx |
| Временный каталог | Ошибка при создании временного файла | Проверить каталог upload_tmp_dir |
#Пошаговое решение
- Определите, где именно отклоняется загрузкаЕсли сервер отвечает HTTP 413 до запуска PHP, проверьте ограничение размера тела запроса Nginx/Apache или внешнего прокси. Если PHP запустился, изучите
$_FILES["имя_поля"]["error"]: значениеUPLOAD_ERR_INI_SIZE(1) связано сupload_max_filesize,UPLOAD_ERR_FORM_SIZE(2) — с MAX_FILE_SIZE формы, другие коды требуют иной диагностики. Если$_POSTи$_FILESпусты, возможно превышенpost_max_size. Не печатайте содержимое пользовательских файлов в диагностике. - Сверьте ограничения активного веб-PHPВ панели хостинга или временной закрытой диагностической странице проверьте
ini_get("upload_max_filesize"),ini_get("post_max_size"),ini_get("memory_limit")иupload_tmp_dir. Для файла до 20 МБ можно обоснованно установитьupload_max_filesize=20M,post_max_size=24Mс запасом на форму; лимиты должны соответствовать политике сайта. Меняйте конфигурацию активного PHP-FPM, а не только CLIphp.ini; при необходимости перезапустите нужный пул. - Проверьте веб-сервер, прокси и временный каталогДля Nginx на обслуживающем сайте может понадобиться
client_max_body_size 24m;в подходящем контексте конфигурации; проверьте синтаксисnginx -tи только затем применитеnginx -s reloadили штатную команду панели. В Apache и внешнем прокси действуют другие параметры. Убедитесь, что у PHP есть свободное место и права записи в каталог временных загрузок. Не делайте весь каталог/tmpдоступным на запись любому сервису из-за одной ошибки. - Проверьте загрузку разных размеров и защитуПовторите тест с небольшим допустимым файлом и файлом размером близким к установленному лимиту. Убедитесь, что сервер возвращает понятное сообщение при превышении, а допустимый файл реально записан и проходит проверку типа/расширения и антивирусную обработку, если предусмотрена. Не увеличивайте размер загрузки без учёта дискового места и защиты от злоупотреблений. Удалите диагностическую страницу после проверки.
#На что обратить внимание
Не открывайте загрузку неограниченного размера и не доверяйте только расширению файла: проверяйте тип, права и безопасный каталог хранения.