2011-10-13 9 views
34

En mi sitio de acogida, he visto (a través de phpinfo) quePHP post_max_size anula upload_max_filesize

  • post_max_size = 8 Mb
  • upload_max_filesize = 16Mb

Esto me llevó a pensar que yo debería estar capaz de cargar como un archivo de hasta 16Mb. Sin embargo, cuando hago esto a través de un método de publicación (como es normal), post_max_size toma el control y declara que he enviado demasiado.

¿Cuál es el método que permite enviar un archivo de hasta 16Mb? GET - PUT - ¿otro?

Espero que alguien pueda aclarar esto para mí.

Simon

Respuesta

9

El método normal para enviar una carga de archivos es POST, por tanto, también debe haber post_max_size 16 Mb o más.

Por cierto, también memory_limit desempeña un papel. Debería ser más grande que 16Mb, pero dado que el valor predeterminado es 128Mb, no verá este problema. Ejemplo php.ini configuración:

post_max_size = 16M 
upload_max_filesize = 16M 
memory_limit = 128M 

Cambiar estos valores en php.ini si no tienes acceso a ella, de lo contrario se puede tratar de cambiarlos en un archivo .htaccess.

php_value upload_max_filesize 16M 
php_value post_max_size 16M 

Esto sólo funcionará si la configuración AllowOverride lo permiten. De lo contrario, debes preguntarle a tu empresa de hosting.

66

upload_max_filesize es el límite de cualquier archivo individual. post_max_size es el límite de todo el cuerpo de la solicitud, que podría incluir varios archivos.

Dado post_max_size = 20M y upload_max_filesize = 6M puede cargar hasta 3 archivos de 6M cada uno. Si por el contrario post_max_size = 6M y upload_max_filesize = 20M, entonces solo puede cargar un archivo de 6M antes de presionar post_max_size. No ayuda tener upload_max_size>post_max_size.

No es obvio cómo reconocer pasar por post_max_size. $_POST y $_FILES estarán vacíos, pero $_SERVER['CONTENT_LENGTH'] será> 0.Si el cliente simplemente no ha subido ninguna variable de correos o archivos, a continuación, $_SERVER['CONTENT_LENGTH'] será 0.

5

Sus ajustes de configuración del servidor permite a los usuarios subir archivos de hasta 16 MB (porque se ha configurado upload_max_filesize = 16Mb) pero el post_max_size acepta datos post hasta 8 MB solamente. Es por eso que arroja un error.

citado del official PHP site:

  1. Para cargar archivos de gran tamaño, valor post_max_size debe ser mayor que upload_max_filesize.

  2. memory_limit debe ser mayor que post_max_size

Debe siempre su valor post_max_size mayor que el valor upload_max_filesize.

Cuestiones relacionadas