2010-09-15 22 views
8

En uno de mis sitios de CakePHP, recibí este error.Entidad de solicitud demasiado grande PHP

Entidad de solicitud demasiado grande

No sé cuál es el problema. Creo que los datos que publico a través del formulario son demasiado grandes. Busqué esto en el motor de búsqueda y obtuve que tendré que aumentar post_max_size. Por defecto, creo que está configurado en 8M.

¿Pero no sabes cómo aumentar post_max_size en CakePHP y qué hacer para ello?

Gracias.

Respuesta

15

post_max_size y upload_max_filesize son configuraciones de PHP.ini. Puede configurarlos directamente en PHP.ini o vía ini_set. No sé si esto también se puede establecer con algunas herramientas internas de Cake.

Sin embargo, el error también podría ser causado por un set limit of the RequestBodyLength in Apache (suponiendo que se ejecuta bajo Apache).

+3

Además, en todas partes que las fianzas de Apache con 'HTTP_REQUEST_ENTITY_TOO_LARGE', hay una declaración de registro, por lo que debería ser una descripción de qué es exactamente ofendido Apache sobre el tamaño de la solicitud en el registro de errores –

+0

Sí. Pero en CakePHP, ¿en qué archivo tendré que configurarlo usando ini_set? – gautamlakum

+0

@lakum En el archivo bootstrap. Pero como señala Travis a continuación, algunos valores ini no se pueden establecer en tiempo de ejecución. No he comprobado si esto se aplica a 'post_max_size' y' upload_max_filesize'. – Gordon

1

Creo que debe establecer eso en el archivo de configuración de PHP, php.ini. Si tiene acceso a un nivel VPS/raíz, simplemente aumente el tamaño de eso. Si no lo hace (alojamiento compartido), puede modificar los parámetros de php ini en tiempo de ejecución. Tenga en cuenta que ini_set() no funcionará aquí, porque las configuraciones de PHP se cargan demasiado tarde (después de que el archivo ha sido cargado, el script PHP comienza a ejecutarse).

Tendrá que incluya lo siguiente en su archivo .htaccess (en alojamiento compartido):

php_value post_max_size 104857600 

Es posible que esto no va a funcionar. Algunas búsquedas en Google parecían indicar que algunos hosts compartidos bloquearían esta configuración, por lo que no sería demasiado fácil de usar en htaccess (solo en la configuración del servidor principal). Si ese es el caso, deberá mover los hosts.

0

En ocasiones, en el alojamiento compartido puede agregar su propio archivo php.ini; solo copie los bits relevantes de cualquier archivo predeterminado (o google para uno).

No es un error que haya visto antes; Gordon, como dice, puede ser Apache.

No tenga miedo de preguntarle al equipo de soporte de hosting - Siempre he encontrado que son muy útiles (creo que deben sentirse solos), y con frecuencia harán cambios de configuración para usted.

Ciertamente no es un problema de CakePHP.

7

Intenté todas estas respuestas y lo único que funcionó para mí fue ajustar el Tamaño del búfer de SSL. Puede configurar esto por ...

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

... y luego reinicie Apache para que surta efecto. (Se encontró en: http://forum.joomla.org/viewtopic.php?p=2085574)

+0

Acabo de cambiar a requerir SSL. Esto lo resolvió. – zachswain

5

Otra posible causa del error "413 entidad de solicitud es demasiado grande" es la seguridad de mod. Esa fue la causa para mí.

Mirando en el registro de errores de Apache del sitio dijo:

ModSecurity: Solicitud cuerpo hay archivos longitud de datos es mayor que el límite configurado (131072) ..Deny con código (413)

En mi Ubuntu 14.04 el archivo de configuración está aquí, pero esto realmente depende del sistema:

/etc/modsecurity/modsecurity.conf

Hay es el valor predeterminado para SecRequestBodyNoFilesLimit (y posiblemente también SecRequestBodyInMemoryLimit).

0

Definitivamente no es un problema CakePHP pero aquí están los dos ajustes que necesita configurar para subir archivos correctamente:

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

Y establecer:

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

Ahora la parte difícil en el caso de que se usando HTTPS! también necesita configurar un SSL.

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

y establecer el SSLRenegBufferSize

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