GalaxyData Community

413 Request Entity Too Large

Некоторые пользователи WordPress, когда пытаются запостить большой текстовый пост или страницу сталкиваются со следующей ошибкой:

HTTP Error: 413 Request Entity Too Large
Request Entity Too Large
The requested resource
/wp-admin/post.php
does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit.

Аналогичная ошибка может проявиться в любых других CMS, так как она связана с настройками безопасности WEB сервера.

При этом в журнале  /var/log/httpd/modsec_audit.log  появляется ошибка:

Message: Request body no files data length is larger than the configured limit (1048576).
Apache-Handler: php5-script
Stopwatch: 1393266872414275 4360561 (- - -)
Producer: ModSecurity for Apache/2.5.11 (http://www.modsecurity.org/); core ruleset/1.6.0.
Server: Apache/2.2.20 (CentOS) mod_rpaf/0.5 PHP/5.2.17 with Suhosin-Patch mod_ssl/2.2.20 OpenSSL/0.9.8e-fips-rhel5 NPS/0.6.1 mod_mass_hosting/0.2

* Обычно этот журнал недоступен пользователям shared хостинга.

Ошибка сигнализирует о том, что тело HTTP запроса превышает размеры установленные в конфигурации WEB сервера. Детальное пояснение того как и почему эти директивы используются можно найти здесь.

Гугление часто приводит на страницы с рекомендациями изменить настройки при помощи редактирования файла /etc/modsecurity2/modsec2.conf

# Basic configuration options
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
...
# Maximum request body size we will accept for buffering
SecRequestBodyLimit 1124288
# Store up to 1MB in memory
SecRequestBodyInMemoryLimit 1124288
# Buffer response bodies of up to
SecResponseBodyLimit 1124288

Однако на серверах массового (shared) хостинга эти рычагинедоступны его пользователям. И остаётся им уповать на то, что эта опция может быть переопределена в файле .htaccess

<IfModule mod_security2.c>
  SecRequestBodyLimit 2097152
  LimitRequestBody 2097152
</IfModule>

Обратите внимание что файл  .htaccess  пишется с точкой в начале. В Linux среде это признак невидимости файла или каталога. Поэтому чтобы увидеть его включите в вашем ftp клиенте опцию отображения скрытых файлов. Если всё же по каким либо причинам файл .htaccess отсутствует в директории вашего WEB сайта значит его нужно создать и добавить в него следующую директиву:

# 0 — без ограничения — 2GB
LimitRequestBody 2097152 ## 2 MB, должно хватить для большинства случаев.

После этого большое сообщение должно нормально выгружаться на сервер. Разумеется при условии если вы верно установили размер. Помните что в мультибайтные кодировки влияют на размер.

Однако это не всегда избавляет от ошибки. У меня заработал только такой вариант отключения ошибки директивами в файле .htaccess

<IfModule mod_security2.c>
  SecRuleEngine Off
  SecRequestBodyAccess Off
</IfModule>
Модуль mod_security2.c — в других дистрибутивах может называться иначе.
Либо и вовсе отключите в ISPmanager добавить в файл apache
строку
<IfModule security2_module>
SecRuleEngine Off
</IfModule>

перед

</VirtualHost>

Должно получиться примерное так:

<VirtualHost 127.0.0.1:8080>
	ServerName test1.ru
	ServerAlias www.test1.ru
	DocumentRoot /var/www/user5/data/www/test1.ru
	ServerAdmin webmaster@test1..ru
	DirectoryIndex index.html index.php
	AddDefaultCharset UTF-8
	SuexecUserGroup user5 user5
	CustomLog /var/www/httpd-logs/test1.ru.access.log combined
	ErrorLog /var/www/httpd-logs/test1.ru.error.log
	<FilesMatch "\.ph(p[3-5]?|tml)$">
		SetHandler fcgid-script
		FCGIWrapper /var/www/php-bin-isp-php70/user5/php
	</FilesMatch>
	SetEnvIf X-Forwarded-Proto https HTTPS=on
	
	<IfModule security2_module>
        SecRuleEngine Off
        </IfModule>
	
</VirtualHost>

 

Exit mobile version