Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/01/2013, 15:13
josico
 
Fecha de Ingreso: julio-2009
Mensajes: 172
Antigüedad: 14 años, 10 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?