2010-09-15 18 views
8

In uno dei miei siti CakePHP, ho ricevuto questo errore.Richiesta Entità troppo grande PHP

Entità richiesta troppo grande

Non so qual è il problema. Penso che i dati che sto pubblicando attraverso la forma siano troppo grandi. Ho cercato questo nel motore di ricerca e ottenuto che dovrò aumentare post_max_size. Essere di default Penso che sia impostato su 8M.

Ma non so come aumentare post_max_size in CakePHP e cosa fare per esso?

Grazie.

risposta

15

post_max_size e upload_max_filesize sono impostazioni di PHP.ini. È possibile impostarli direttamente in PHP.ini o tramite ini_set. Non so se questo può essere impostato anche con alcuni strumenti interni alla torta.

Tuttavia, l'errore potrebbe anche essere causato da un set limit of the RequestBodyLength in Apache (presupponendo che si stia utilizzando Apache).

+3

Inoltre, in tutto il mondo che balle Apache con 'HTTP_REQUEST_ENTITY_TOO_LARGE', c'è una dichiarazione di registro, quindi ci dovrebbe essere una descrizione di che cosa esattamente offeso Apache circa le dimensioni della richiesta nel registro degli errori. –

+0

Sì. Ma in CakePHP, in quale file dovrò impostarlo usando ini_set? – gautamlakum

+0

@lakum Nel file bootstrap. Ma come sottolinea Travis di seguito, alcuni valori ini non possono essere impostati in fase di esecuzione. Non ho verificato se questo si applica a 'post_max_size' e' upload_max_filesize'. – Gordon

1

Penso che sia necessario impostarlo nel file di configurazione PHP, php.ini. Se hai accesso a VPS/livello root, aumenta la dimensione. In caso contrario (hosting condiviso), è possibile modificare i parametri php ini in fase di esecuzione. Nota che ini_set() non funzionerà qui, perché le impostazioni PHP sono caricate troppo tardi (dopo che il file è stato caricato, lo script PHP inizia l'esecuzione).

Avrete bisogno di includere quanto segue nel file .htaccess (su hosting condiviso):

php_value post_max_size 104857600 

E 'possibile questo non funzionerà. Alcuni googling fanno sembrare che alcuni host condivisi blocchino questa impostazione, rendendola non superabile in htaccess (solo nella configurazione del server principale). In tal caso, dovrai spostare gli host.

0

A volte su un hosting condiviso è possibile aggiungere il proprio file php.ini - basta copiare i bit rilevanti da qualsiasi file predefinito (o google per uno).

Non è un errore che ho visto prima - potrebbe essere come dice Gordon, essere Apache.

Non aver paura di chiedere al team di supporto dell'hosting: li ho sempre trovati molto utili (penso che debbano essere soli) e spesso apportano modifiche di configurazione per te.

Non è certamente un problema con CakePHP.

7

Ho provato tutte queste risposte e l'unica cosa che ha funzionato per me è stata la messa a punto della dimensione del buffer SSL. È possibile impostare questo ...

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

... e quindi solo riavviare Apache per rendere effettivo. (Trovato a: http://forum.joomla.org/viewtopic.php?p=2085574)

+0

Appena modificato per richiedere SSL. Questo l'ha risolto. – zachswain

5

Un'altra possibile causa dell'errore "Entità richiesta 413 troppo grande" è mod-security. Questa è stata la causa per me.

Guardando nel log degli errori di Apache del sito ha detto:

ModSecurity: Richiesta corpo nessun file lunghezza dei dati è maggiore del limite configurato (131072) ..Nega con il codice (413)

Sulla mia Ubuntu 14.04 il file di configurazione è qui, ma questo in realtà dipende dal sistema:

/etc/modsecurity/modsecurity.conf

Ci è il valore predefinito per SecRequestBodyNoFilesLimit (e possibilmente anche SecRequestBodyInMemoryLimit).

0

Sicuramente non CakePHP problema, ma qui ci sono le due impostazioni necessarie per impostare al fine di caricare i file correttamente:

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

e impostare:

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

Ora la parte difficile nel caso in cui si è usando HTTPS! devi anche configurare un SSL.

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

e impostare lo SSLRenegBufferSize

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