2009-04-07 26 views
6

Tengo una página web php con 15 campos. El usuario lo usará para subir imágenes. Probé esto cargando 15 imágenes de jpg, cada una de aproximadamente 2 M, sin ningún problema. El día que lance, moveré esta página web a otro entorno de alojamiento compartido de Linux (aún no estoy seguro de cuál). ¿Existen algunos entornos de alojamiento web que limiten el tamaño de las cargas totales en una solicitud http?PHP - Tamaño máximo de carga total?

Respuesta

19

Sí. Hay (por lo que yo puedo recordar) tres o más valores de configuración que afectan cargar las restricciones de tamaño:

  • upload_max_filesize, que establece un límite superior en el tamaño de los archivos cargados
  • post_max_size, lo que limita el total de tamaño de los datos publicados, incluyendo datos de archivo
  • max_input_time, que restringe la longitud de tiempo que se permite la secuencia de comandos para procesar los datos de entrada, incluidos los valores publicados

upload_max_filesize un límite en cada i archivo nividual; sin embargo, max_post_size es un límite superior de la solicitud completa, que incluye todos los archivos cargados.

Los diferentes entornos de alojamiento tendrán estos valores configurados de forma diferente, lo que puede afectar sus capacidades durante el despliegue.

+3

Un reinicio de Apache ayuda después de realizar todos estos cambios pero no ocurre nada – sjobe

+0

hay otros, consulte mi respuesta a continuación – docesam

0

Esto sería inusual, pero por supuesto, consulte con la compañía de hosting que elija. Si hubiera un límite, ciertamente sería superior a 30 MB.

+0

El límite predeterminado en mi máquina Linux fue de 2 MB. – Benson

+0

Bueno, sí, pero cuando compras un hosting van a aumentar eso, y si no lo hacen puedes pedirles que lo hagan. –

+0

Los hosters de Crappy no. – ThiefMaster

0

La directiva php.ini "post_max_size" debe limitar la cantidad de datos que puede enviar en una única POST. si publicas 15 imágenes en una publicación, estoy bastante seguro de que todavía se considera una POST. Así que podría ser bueno verificar este valor antes de lanzarlo.

4

Es una configuración en php.ini. Puede buscar en el resultado de la información de php el campo etiquetado "upload_max_filesize". Para obtener una página php información, crear un archivo PHP con el siguiente código:

<?php phpinfo(); ?> 

This post en php.net le da ejemplos de código para obtener esa información, y el resto de la página es un tesoro de configuración de PHP opciones.

4

Hay montón de configuraciones de PHP que limitan el proceso de carga:

  • file_uploads
  • upload_max_filesize
  • max_input_time
  • memory_limit
  • max_execution_time
  • post_max_size

Sugeriría leer esta página: http://www.radinks.com/upload/config.php

Si bien es cierto que muchos de estos no limitan el tamaño de carga, sí que ponen un límite al proceso de carga, p. Si el límite de memoria es demasiado bajo, entonces tendrá problemas para cargar archivos grandes que necesitan permanecer en la memoria por un período de tiempo corto.

+0

'file_uploads',' memory_limit' y 'max_execution_time' no limitan el tamaño máximo de carga total. – Gumbo

6

Los límites de carga se establecen a través de php ini.Usted puede tratar de conseguir que de este modo:

$post_max_size = ini_get('post_max_size'); 
$upload_max_filesize = ini_get('upload_max_filesize'); 
-1

que he visto la mejor solución here hasta ahora, y este es el código:

/** 
* Returns the maximally uploadable file size in megabytes 
* 
* @return string 
*/ 
function getMaxUploadSize() 
{ 
    $max_upload = (int)(ini_get('upload_max_filesize')); 
    $max_post  = (int)(ini_get('post_max_size')); 
    $memory_limit = (int)(ini_get('memory_limit')); 
    return min($max_upload, $max_post, $memory_limit);  
} 
0

Si está utilizando nginx a continuación, asegúrese de que tiene lo siguiente:

server { 
... 
    client_max_body_size 100M; 
.... 
} 
0

aquí:

max_execution_time 
max_input_time 
memory_limit 
post_max_size 
upload_max_filesize 
max_file_uploads