2011-06-11 17 views
5

Recibo este error cuando los usuarios cargan imágenes en mi sitio.PHP Error grave: memoria insuficiente (asignada 80740352) (intenté asignar 12352 bytes) en

mensaje de error es "PHP Fatal error: Memoria insuficiente (asignado 80740352) (intentado asignar 12352 bytes) en/home ......." ¿Cómo puedo solucionar esto usando php.ini?

Aquí está mi configuración de php.ini de carga actuales

upload_max_filesize = 2000M ; 
post_max_size = 2000M 
max_file_uploads = 8 

Cualquier idea qué más tengo que añadir para resolver este error?

+1

Es su secuencia de comandos que está consumiendo demasiada memoria con lo que sea que esté haciendo, ¡no con la carga en sí misma! – deceze

+0

posible duplicado de [¿Cómo se solucionan los problemas de php "Sin memoria"?] (Http://stackoverflow.com/questions/6114155/how-do-you-debug-php-out-of-memory-issues) – Gordon

Respuesta

8

El valor óptimo memory_limit depende de lo que está haciendo con los archivos subidos. ¿Lee los archivos en la memoria usando file_get_contents o la biblioteca de GD? En ese caso, aumente memory_limit a al menos lo mismo que upload_max_filesize, preferiblemente más.

Si está utilizando GD, tenga en cuenta que GD mantiene la imagen completa sin comprimir en la memoria. Esto significa que se necesita una memoria en el rango de width * height * bit-depth, por ejemplo, 1024*768*32 = 25 165 824 bits = 3 MB para una captura de pantalla, o tanto como 55 MB para una imagen de 14 megapíxeles.

Es posible que algunas operaciones necesiten crear una copia de la imagen, así que considere establecer memory_limit en el doble de lo que necesita para mantener la imagen en la memoria. También asegúrese de no cargar todas las imágenes en la memoria de una vez si no es necesario. Puede liberar la memoria utilizada por GD llamando al imagedestroy en el mango cuando haya terminado de trabajar con la imagen.

2

aumentar su límite de memoria de php.ini

memory_limit = ... 
+0

¿Alguna sugerencia sobre el valor, por ejemplo, el usuario, era subir 6 imágenes de 1 MB a la vez? – daza166

+0

Mi valor predeterminado es 128Mb y no creo que pueda causar problemas, pero es posible que deba intentarlo. Intente cargar 6 imágenes de 2MB y luego aumente el valor hasta que no obtenga ningún error. También asegúrese de que sus usuarios no carguen imágenes RAW que puedan obtener más de 10 MB, le recomiendo que disminuya el tamaño máximo de carga. –

0

Los archivos cargados se guardan en la memoria, por lo que también debe aumentar la memoria al menos del mismo tamaño del archivo esperado.

memory_limit = 2000M // better 2200M or above, just in case. 
7
set_time_limit(0); 
ini_set('memory_limit', '20000M'); 

Al inicio de la secuencia de comandos. Cambie los 20000M en consecuencia.

Cuestiones relacionadas