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// Ruta donde se guardarán las imágenes
$directorio = DIR_IMG_US;
// Recibo los datos de la imagen
$nombre = 'img.'.str_ireplace('.', '', substr($_FILES['imagen']['name'], -4, strlen($_FILES['imagen']['name'])));
$tipo = $_FILES['imagen']['type'];
$tamano = $_FILES['imagen']['size'];
// Muevo la imagen desde su ubicación
// temporal al directorio definitivo
if($_FILES['imagen']['type']="image/jpg" OR $_FILES['imagen']['type']="image/jpeg" OR $_FILES['imagen']['type']="image/png")
{
if($_FILES['imagen']['size']<=$_POST["MAX_FILE_SIZE"] OR $_FILES['imagen']['size'] == 0)
{
$carga_id = US_ID.rand(1000,9999).$tiempo_actual; /// Facilita una id a la carga
$nombre_imagen=US_ID.'-'.$tiempo_actual.'-'.$_POST['tipo'].'-'.$carga_id.'-'.$nombre;
if(move_uploaded_file($_FILES['imagen']['tmp_name'],$directorio.$nombre_imagen))
{
if($_FILES['imagen']['type']="image/jpg" OR $_FILES['imagen']['type']="image/jpeg")
{
$img_origen = imagecreatefromjpeg($directorio.$nombre_imagen);
}
elseif($_FILES['imagen']['type']="image/png")
{
$img_origen = imagecreatefrompng($directorio.$nombre_imagen);
}
$ancho_origen = imagesx( $img_origen );//se ontiene el ancho de la imagen
$alto_origen = imagesy( $img_origen );//se obtiene el alto de la imagen
$ancho_limite=380; /// Cuanto más se reduce, la calidad y el peso son más bajos
if($ancho_origen>$alto_origen){// para foto horizontal
$ancho_origen=$ancho_limite;
$alto_origen=$ancho_limite*imagesy( $img_origen )/imagesx( $img_origen );
}else{//para fotos verticales
$alto_origen=$ancho_limite;
$ancho_origen=$ancho_limite*imagesx( $img_origen )/imagesy( $img_origen );
}
$img_destino = imagecreatetruecolor($ancho_origen ,$alto_origen );// se crea la imagen segun las dimensiones dadas
// copy/resize as usual
imagecopyresized( $img_destino, $img_origen, 0, 0, 0, 0, $ancho_origen, $alto_origen, imagesx( $img_origen ), imagesy( $img_origen ) );
imagejpeg( $img_destino, $directorio.$nombre_imagen );//se guarda la nueva foto
//imagedestroy( $img_origen );
//imagedestroy( $img_destino );
$sql_insertar="
INSERT INTO `".$sql_db."`.`ga_fotos` (
`usuario` ,
`puesto` ,
`imagen`
)
VALUES (
'".US_ID."', '".$_POST['tipo']."', '".$nombre_imagen."'
);
";
mysql_query($sql_insertar);
if($_POST['tipo'] == 0)
{
$sql_insertar="
UPDATE `".$sql_db."`.`ga_usuarios` SET `foto_p` = '1' WHERE `ga_usuarios`.`id` =".US_ID.";
";
mysql_query($sql_insertar);
}
?>
<script type="text/javascript">
window.location="<?=$url_actual?>";
</script>
<?php
}
else
{
?>
<script>alert('No se pudo cargar la imagen')</script>
<script type="text/javascript">
window.location="<?=$url_actual?>";
</script>
<?php
}
}
else
{
?>
<script>alert('La imagen no puede ser mayor de 10Mb')</script>
<script type="text/javascript">
window.location="<?=$url_actual?>";
</script>
<?php
}
}
else
{
?>
<script>alert('Solo se permiten archivos jpg y png')</script>
<script type="text/javascript">
window.location="<?=$url_actual?>";
</script>
<?php
}
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?