Помилка web 413 Request Entity Too Large

Подібна помилка виникає при завантаженні великих файлів на сервер з допомогою http-протоколу.
Тут розглянемо їх в чотирьох випадках, при виникненні в: nginx, apache, PHP.
Як правило, браузер не може вказати правильно, де виникла помилка, тому шукаємо все в логах, або ж міняємо на всіх стадіях обробітку скрипта.


Отже, почнемо:
1. NGINX
Там параметром, що відповідає за ліміт по розміру файла для завантаження, є client_max_body_size.
Його можна змінювати як глобально (секція http), так і для сайту (server), або навіть для location(набір правил).
Виставляємо
client_max_body_size 100m;

і релоад/рестрарт nginx.

Деталі можна знайти на оф. сайті та у wiki

2. APACHE/HTTP
Там цим параметром є LimitRequestBody. По замовчуванню він не лімітується, проте…
Параметр іде в байтах.
Підтримується директива на всіх ступенях конфігурації apache: від серверного конфіга, до директорії та .htaccess.
Додаємо в .htaccess стрічку (100мб)

LimitRequestBody 104857600

і перезавантажуємо сторінку для аплоада файлів. Можна заливати.

3. РНР
Тут за ліміт відповідають два значення: прямо upload_max_filesize та опосередковано max_post_size.
Перший відповідає за обмеження на розмір завантажуваних файлів, другий ліміт – за POST запит, яким вони завантажуються. Другий ліміт не повинен бути менший за перший, інакше зміни ви просто не побачите.
По замовчуванню перший 2Мб, другий – 8Мб.
Якщо на сервері PHP як модуль apache, тоді достатньо прописати в .htaccess

php_value upload_max_filesize 100M
php_value post_max_size 100M

оновити сторінку, і лити файли.
Якщо ж РНР як CGI чи FASTCGI, то ці директиви треба задавати напряму в конфігурації апача (якщо стрічка запуску не підміняє основний php.ini користувацьким), а потім ребутити/рабоадити apache (якщо CGI), або PHP-обробник (якщо FASTCGI)

Опубликовано в Apache, nginx, PHP

Рубрики