Foros del Web » Programando para Internet » PHP »

Fatal error: Allowed memory size of 8388608 bytes exhausted

Estas en el tema de Fatal error: Allowed memory size of 8388608 bytes exhausted en el foro de PHP en Foros del Web. Me da este error al enviar una imagen Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 3072 bytes) in /home/merengue/www/modulos/cuenta.php on ...
  #1 (permalink)  
Antiguo 02/01/2013, 15:13
 
Fecha de Ingreso: julio-2009
Mensajes: 172
Antigüedad: 14 años, 9 meses
Puntos: 3
Fatal error: Allowed memory size of 8388608 bytes exhausted

Me da este error al enviar una imagen

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 3072 bytes) in /home/merengue/www/modulos/cuenta.php on line 575

Uso este código:

Código PHP:
Ver original
  1. // Ruta donde se guardarán las imágenes
  2.     $directorio = DIR_IMG_US;
  3.  
  4.     // Recibo los datos de la imagen
  5.     $nombre = 'img.'.str_ireplace('.', '', substr($_FILES['imagen']['name'], -4, strlen($_FILES['imagen']['name'])));
  6.     $tipo = $_FILES['imagen']['type'];
  7.     $tamano = $_FILES['imagen']['size'];
  8.  
  9.     // Muevo la imagen desde su ubicación
  10.     // temporal al directorio definitivo
  11.  
  12.         if($_FILES['imagen']['type']="image/jpg" OR $_FILES['imagen']['type']="image/jpeg" OR $_FILES['imagen']['type']="image/png")
  13.         {
  14.        
  15.             if($_FILES['imagen']['size']<=$_POST["MAX_FILE_SIZE"] OR $_FILES['imagen']['size'] == 0)
  16.             {
  17.                 $carga_id = US_ID.rand(1000,9999).$tiempo_actual; /// Facilita una id a la carga
  18.                 $nombre_imagen=US_ID.'-'.$tiempo_actual.'-'.$_POST['tipo'].'-'.$carga_id.'-'.$nombre;
  19.                
  20.                 if(move_uploaded_file($_FILES['imagen']['tmp_name'],$directorio.$nombre_imagen))
  21.                 {
  22.  
  23.                     if($_FILES['imagen']['type']="image/jpg" OR $_FILES['imagen']['type']="image/jpeg")
  24.                     {
  25.                         $img_origen = imagecreatefromjpeg($directorio.$nombre_imagen);
  26.                     }
  27.                     elseif($_FILES['imagen']['type']="image/png")
  28.                     {
  29.                         $img_origen = imagecreatefrompng($directorio.$nombre_imagen);
  30.                     }
  31.                    
  32.                     $ancho_origen = imagesx( $img_origen );//se ontiene el ancho de la imagen
  33.                     $alto_origen = imagesy( $img_origen );//se obtiene el alto de la imagen
  34.                     $ancho_limite=380; /// Cuanto más se reduce, la calidad y el peso son más bajos
  35.                     if($ancho_origen>$alto_origen){// para foto horizontal
  36.                        
  37.                         $ancho_origen=$ancho_limite;
  38.                         $alto_origen=$ancho_limite*imagesy( $img_origen )/imagesx( $img_origen );
  39.                        
  40.                     }else{//para fotos verticales
  41.                         $alto_origen=$ancho_limite;
  42.                         $ancho_origen=$ancho_limite*imagesx( $img_origen )/imagesy( $img_origen );
  43.                     }
  44.                     $img_destino = imagecreatetruecolor($ancho_origen ,$alto_origen );// se crea la imagen segun las dimensiones dadas
  45.                     // copy/resize as usual
  46.                     imagecopyresized( $img_destino, $img_origen, 0, 0, 0, 0, $ancho_origen, $alto_origen, imagesx( $img_origen ), imagesy( $img_origen ) );
  47.                     imagejpeg( $img_destino, $directorio.$nombre_imagen );//se guarda la nueva foto
  48.                     //imagedestroy( $img_origen );
  49.                     //imagedestroy( $img_destino );
  50.  
  51.                    
  52.                     $sql_insertar="
  53.                         INSERT INTO `".$sql_db."`.`ga_fotos` (
  54.                         `usuario` ,
  55.                         `puesto` ,
  56.                         `imagen`
  57.                         )
  58.                         VALUES (
  59.                         '".US_ID."', '".$_POST['tipo']."', '".$nombre_imagen."'
  60.                         );             
  61.                     ";
  62.                    
  63.                     mysql_query($sql_insertar);
  64.                    
  65.                    
  66.                     if($_POST['tipo'] == 0)
  67.                     {
  68.                    
  69.                         $sql_insertar="
  70.                        
  71.                             UPDATE `".$sql_db."`.`ga_usuarios` SET `foto_p` = '1' WHERE `ga_usuarios`.`id` =".US_ID.";
  72.                        
  73.                         ";
  74.                        
  75.                         mysql_query($sql_insertar);
  76.                    
  77.                     }
  78.  
  79.                
  80.                     ?>
  81.                         <script type="text/javascript">
  82.                         window.location="<?=$url_actual?>";
  83.                         </script>  
  84.                     <?php
  85.                    
  86.                    
  87.                 }
  88.                 else
  89.                 {
  90.                
  91.                     ?>
  92.                         <script>alert('No se pudo cargar la imagen')</script>
  93.                         <script type="text/javascript">
  94.                         window.location="<?=$url_actual?>";
  95.                         </script>  
  96.                     <?php
  97.                
  98.                 }
  99.                    
  100.  
  101.            
  102.             }
  103.             else
  104.             {
  105.                 ?>
  106.                     <script>alert('La imagen no puede ser mayor de 10Mb')</script>
  107.                     <script type="text/javascript">
  108.                     window.location="<?=$url_actual?>";
  109.                     </script>  
  110.                 <?php
  111.             }
  112.            
  113.         }
  114.         else
  115.         {
  116.             ?>
  117.                 <script>alert('Solo se permiten archivos jpg y png')</script>
  118.                 <script type="text/javascript">
  119.                 window.location="<?=$url_actual?>";
  120.                 </script>  
  121.             <?php
  122.         }

El error me lo da con la funcion imagecreatefromjpeg si la imagen pesa más de una mega aproximadamente. (Ver línea 25 del ejemplo anterior)

En el servidor anterior me subia imagenes pesadas y las reducia, pero en este no. ¿Sera que tengo que configurar algo?
  #2 (permalink)  
Antiguo 02/01/2013, 15:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Fatal error: Allowed memory size of 8388608 bytes exhausted

Revisa la opción de configuración memory_limit:
http://php.net/manual/es/ini.core.php#ini.memory-limit
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 03/01/2013, 19:00
 
Fecha de Ingreso: julio-2009
Mensajes: 172
Antigüedad: 14 años, 9 meses
Puntos: 3
Respuesta: Fatal error: Allowed memory size of 8388608 bytes exhausted

Gracias David. Ya he solucionado el problema.

Etiquetas: allowed, fatal, memory, mysql, size, sql, usuarios, byte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:32.