Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    148

    Errore upload file su server più grandi di 3mb

    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

  2. #2
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    L'errore indica che la memoria limite impostata è di 64M ma è stata superata.
    Impostalo a 72 con ini_set("memory_limit", "72M"); eil limite di upload...
    Se non funziona potrebbe essere un problema di auto-caching di php.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.