web-dev-qa-db-fra.com

Demande d'entité trop grande PHP

Dans l'un de mes sites CakePHP, j'ai eu cette erreur.

Entité de demande trop grande

Je ne sais pas quel est le problème. Je pense que les données que je publie via le formulaire sont trop volumineuses. J'ai recherché ceci dans le moteur de recherche et j'ai obtenu que je devrais augmenter post_max_size. Par défaut, je pense qu'il est réglé sur 8M.

Mais je ne sais pas comment augmenter post_max_size dans CakePHP et que faire pour cela?

Merci.

13
gautamlakum

post_max_size et upload_max_filesize sont des paramètres PHP.ini. Vous pouvez les définir directement dans PHP.ini ou via ini_set . Je ne sais pas si cela peut également être défini avec certains outils internes à Cake.

Cependant, l'erreur peut également être causée par un définir la limite de RequestBodyLength dans Apache (en supposant que vous exécutez sous Apache).

18
Gordon

J'ai essayé toutes ces réponses et la seule chose qui a fonctionné pour moi a été de régler la taille du tampon SSL. Vous pouvez définir cela en ...

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

... puis redémarrez Apache pour prendre effet. (Trouvé sur: http://forum.joomla.org/viewtopic.php?p=2085574 )

9
duskstriker

Une autre cause possible de l'erreur "entité de demande 413 trop importante" est la sécurité du module. C'était la cause pour moi.

La recherche dans le journal des erreurs Apache du site a déclaré:

ModSecurity: La longueur des données du corps du fichier sans fichier est supérieure à la limite configurée (131072). Refuser avec le code (413)

Sur mon Ubuntu 14.04, le fichier de configuration est ici mais cela dépend vraiment du système:

/etc/modsecurity/modsecurity.conf

Il y a la valeur par défaut pour SecRequestBodyNoFilesLimit (et peut-être aussi SecRequestBodyInMemoryLimit ).

5
Gonfi den Tschal

Certainement pas un problème CakePHP mais voici les deux paramètres que vous devez définir pour télécharger correctement les fichiers:

vim /etc/php5/php.ini (or wherever the .ini is located)

Et mettre:

post_max_size="200M"
upload_max_filesize="200M"

Maintenant, la partie délicate au cas où vous utilisez HTTPS! vous devez également configurer un SSL.

vim /etc/Apache2/sites-available/<whatever>-443.conf

Et définissez SSLRenegBufferSize

<Directory /appdata/www/<whatever>/web>
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
    SSLRenegBufferSize 201048600
</Directory>
2
Lukas Lukac

Je pense que vous devez définir cela dans le fichier de configuration PHP, php.ini. Si vous avez un accès au niveau VPS/root, augmentez la taille à ce sujet. Si vous ne le faites pas (partagé hébergement), vous pouvez modifier les paramètres php ini lors de l'exécution. Notez que ini_set () ne fonctionnera pas ici, car les paramètres PHP sont chargés trop tard (après le téléchargement du fichier, le PHP commence l'exécution).

Vous devrez inclure les éléments suivants dans votre fichier htaccess (sur l'hébergement partagé):

php_value post_max_size 104857600

Il est possible que cela ne fonctionne pas. Certaines recherches sur Google ont donné l'impression que certains hôtes partagés verrouillent ce paramètre, le rendant non surpassable dans htaccess (uniquement dans la configuration du serveur principal). Si tel est le cas, vous devrez déplacer les hôtes.

1
Travis Leleu

Parfois, sur l'hébergement partagé, vous pouvez ajouter votre propre fichier php.ini - copiez simplement les bits pertinents de n'importe quel fichier par défaut (ou google pour un).

Ce n'est pas une erreur que j'ai vue auparavant - cela peut, comme le dit Gordon, être Apache.

N'ayez pas peur de demander à l'équipe de support d'hébergement - je les ai toujours trouvés très utiles (je pense qu'ils doivent se sentir seuls), et souvent ils feront des changements de configuration pour vous.

Ce n'est certainement pas un problème CakePHP.

0
Leo