web-dev-qa-db-fra.com

Entité de demande trop grande

Je reçois ce message, 

Request Entity Too Large
The requested resource
/index.php
does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit. 

Je mets

php_value post_max_size 50M
php_value upload_max_filesize 50M

en .htaccess mais pas aidé

Comment surmonter cela? 

Merci

15
Oleksandr IY

Une fois que vous avez terminé de remonter PHP memory_limit , post_max_size et upload_max_filesize , je voudrais vous recommander quelques articles sur le sujet, peut-être que l'un d'eux résoudra le problème.

J'ai trouvé ce post sur Server Fault:
https://serverfault.com/questions/79741/php-Apache-post-limit/79745#79745

  • sybreon suggère de revérifier le Content-Length, et - citant - "assurez-vous que vous vous connectez directement à Apache et non par un proxy ou un proxy inverse. taille maximale d'une demande en tant que sorte de mesure de sécurité. Par conséquent, vous voudrez peut-être vérifier cela ainsi que vos journaux Apache pour vous assurer que rien d'autre ne se passe. " 

  • sybreon a également posté ce lien: Problèmes d’erreur Apache 413 .
    Ce qui suit n’est applicable que si vous avez mod_ssl module activé dans Apache. (Sinon, ce paramètre peut provoquer une panne du serveur.)
    Citer l'article:
    "J'utilisais des certificats de client SSL Apache, qui ont une limite de 128 Ko, et si la renégociation doit avoir lieu, un plus grand POST échouera.
    Cette publication de Bugzilla avait les indices - Vous devez définir ce qui suit comme DEFAULTS pour votre serveur SSL, pas seulement le répertoire.
     

    SSLVerifyClient require
    

    Sinon, cela force une renégociation de quelque sorte et échoue avec une erreur 413. "

  • L'article précédent mentionnait également la directive LimitRequestBody .
    Un gars dit ici que le réglage approprié de cette directive a résolu son problème. .

J'espère que l'un de ces paramètres résoudra ce problème!

12
Sk8erPeter

La seule chose qui fonctionnerait pour moi était de régler la taille de la mémoire tampon SSL. Vous pouvez régler ceci par ...

<Directory /my/blah/blah>
...
  # Set this to something big...
  SSLRenegBufferSize 10486000
...
</Directory>

... et redémarrez Apache pour que la modification soit prise en compte. (Trouvé à: http://forum.joomla.org/viewtopic.php?p=2085574 )

9
duskstriker

Mon serveur est Apache. C'était le module mod_security qui empêchait la publication de données volumineuses d'environ 171 Ko

SecRequestBodyNoFilesLimit 10486000
SecRequestBodyInMemoryLimit 10486000
4
AnkitK

Je me débattais avec le problème trop important de cette 413 - Requête entité pour le dernier jour, alors que je tentais de télécharger des images très volumineuses (en Mo) sur le serveur.

Ma configuration est Apache (227) qui envoie les requêtes par proxy au serveur jboss eap (6.4.20) pour accéder aux points de terminaison restants.

2 Les choses ont fonctionné pour moi.

  1. Rendre SSLVerifyClient requis au niveau de l'hôte virtuel. Cela signifie que toutes les ressources ont besoin d'un certificat client valide présenté pour être servi. Ce n'était pas une option pour moi car toutes les ressources sauf/api ne devraient PAS être protégées mutuellement. Donc, même si cela a fonctionné, ce n'était pas une option pour moi.

  2. J'ai supprimé le niveau global requis par SSLVerifyClient et l'ai gardé «facultatif». J'ai réactivé l'option requise uniquement sur <Location /api>...</Location>. La ruse était que la renégociation de SSL se produise seulement après qu’un certain seuil a été atteint - ce qui correspond à la taille de fichier de téléchargement souhaitée.

  3. Donc, finalement, il s'est avéré que je devais activer le paramètre 'SSLRenegBufferSize' sur un LocationMatch spécifique comme suit:

    <LocationMatch ^/api/v1/path/(.*)/to/(.*)/resource/endpoint$>
    SSLRenegBufferSize 5242880 #allow upto 5MB for files to come through </LocationMatch>

(. *) dans le cas ci-dessus représente les paramètres de mon chemin dans le noeud final. J'espère que cela t'aides.

0
Sumant Shanbag

Si max_post_upload et max_file_upload ont été définis dans PHP, Et qu'il existe un paramètre dans Apache2.conf ou dans les fichiers de configuration ModSec de LimitRequestBody suffisamment élevés 

alors éventuellement un fichier .htaccess fonctionnera.

  1. Allez dans le répertoire contenant le fichier php de téléchargement (le fichier ou la page générant l'erreur.)

2 Faire ou éditer .htaccess

3 Editez ou créez une ligne avec LimitRequestBody 20971520 en elle.

  1. Enregistrez le fichier .htaccess. Définir les autorisations. (644 et propriétaire Apache)

  2. Peut-être redémarrer Apache.

Tada. Si tout va bien fixé. 

Ce paramètre définit cette limite uniquement pour ce dossier, ce qui est un moyen d'éviter un paramètre global dans php et Apache qui vous rend ouvert aux attaques DOS par paquets/chargement volumineux.

LimitRequestBody 0 vous donne des téléchargements illimités.

0
Shane