Ciao a tutti,
ho preso un dominio con aruba e quando provo ad inserire un file superiore di 3mb mi viene fuori questo errore:
codice:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 16000 bytes) in /web/htdocs/www..it/home/upload-file.php on line 37
il mio script di download immagini è questo:
codice:
<?php session_start();
// se la sessione non è attivata reindirizza alla home page
if(empty($_SESSION['u_name']) && empty($_SESSION['passw']))
header("Location:index.php");
$uploaddir = './Img/';
$file = $uploaddir . basename($_FILES['uploadfile']['name']);
//controllo che è stato selezionato un file
if(!is_uploaded_file($_FILES['uploadfile']['tmp_name'])){
echo "Non hai selezionato nessun immagine da inviare al server! Selezionane uno e riprova!";
exit();
}
//controllo se il file esiste già sul server
if (is_file($file)){
echo "Esiste già un immagine con lo stesso nome! Rinomina o cambia l' immagine e tenta nuovamente!";
exit();
}
$w = 1280;
$h = 1024;
$src_tmp = $_FILES['uploadfile']['tmp_name'];
$src = basename($_FILES['uploadfile']['name']);
$size = getimagesize($src_tmp);
//Prelevo l'estensione del file originale
$est = substr($src, -3);
$est = strtolower($est);
//Creo la risorsa immagine GD2
$image = NULL;
switch ($est) {
case "jpg":{
if (imagetypes() & IMG_JPG)
$image = imagecreatefromjpeg($src_tmp);
} break;
case "png":{
if (imagetypes() & IMG_PNG)
$image = imagecreatefrompng($src_tmp);
} break;
case "gif":{
if (imagetypes() & IMG_GIF)
$image = imagecreatefromgif($src_tmp);
} break;
}
if ($image == NULL) {
return FALSE;
}
$newwidth = $size[0];
$newheight = $size[1];
if( $newwidth > $w ){
$newheight = ($w / $newwidth) * $newheight;
$newwidth = $w;
}
if( $newheight > $h ){
$newwidth = ($h / $newheight) * $newwidth;
$newheight = $h;
}
$new = imagecreatetruecolor($newwidth, $newheight) or die("Problemi nella creazione dell'immagine");
imagecopyresampled($new, $image, 0, 0, 0, 0, $newwidth, $newheight, $size[0], $size[1]);
//Salvo la nuova immagine
switch ($est) {
case "jpg":{
if( imagejpeg($new, $file, 80) ){
echo "success";
} else {
echo "error";
}
} break;
case "png":{
if ( imagepng($new, $file) ){
echo "success";
} else {
echo "error";
}
} break;
case "gif":{
if( imagegif($new, $file) ){
echo "success";
} else {
echo "error";
}
} break;
}
imagedestroy($image);
imagedestroy($new);
?>
da quello che ho capito l'errore avviene perchè uso più memoria di quella che ho a disposizione...
ho guardato su phpinfo alle voci:
memory_limit 64M
upload_max_filesize 25M
in poche parole sbaglio qualcosa nello script per l'upload, o cos'altro?
Come posso risolvere?
Grazie ciao