Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Le favolose GD library

  1. #1

    [GD] Le favolose GD library

    Ciao ragazzi,
    ho appena pubblicato un sito sull'host di Aruba (purtroppo) ed ho un grosso problema con le GD library (o almeno credo).

    riporto il seguente errore:

    Warning: imagecreatefromjpeg(/tmp/phpashE8x/) [function.imagecreatefromjpeg]: failed to open stream: Not a directory in /web/htdocs/www.rubamatic.it/home/test/admin/up_imgs.php on line 110

    dove (/tmp/phpashE8x/) è un percorso temporaneo che cambia ogni qual volta avvio lo script.

    Sostanzialmente cerco di fare il resize al volo di una immagini che nella pagina precedente ho "postato" tramite form.

    Lo script in locale funziona perfettamente e l'ho utilizzato in varie occasioni.
    Ve lo riporto per chiarezza,
    questo è il form per l'invio del file e dei dati per poi popolare il database:

    Codice PHP:
    print "
    <div class=\"strumenti\">Aggiungi IMMAGINE al lavoro
      <span class=\"coloreinfo\">
    $nome</span> 
      <div style=\"text-align:right; float:right;\">
        <a href=\"javascript: history.back();\">
          <img src=\"../Imgs/x.gif\" border=\"0\" />
        </a>
      </div>
    </div>
    <form  enctype=\"multipart/form-data\" method=\"post\" action=\"up_imgs.php\">
        

    1. Cliccla su \"sfoglia\" per cercare il file sul tuo Hard disk</p>
        <input type=\"hidden\" name=\"id\" value=\"
    $id\"/>
        <input type=\"hidden\" name=\"nome\" value=\"
    $nome\"/>
        <input type=\"file\" name=\"immagine\" />        
        

    2. Scrivi un commento per il file IMMAGINE in italiano e in inglese</p>                    
        <textarea name=\"didascalia\"  cols=\"70\" rows=\"5\">ITALIANO</textarea>
        

        <textarea name=\"didaeng\"  cols=\"70\" rows=\"5\">INGLESE</textarea>
        

    3.Clicca su invia per procedere con l'upload del file.  <input type=\"submit\"  value=\"Invia\"></p>
    </form>"

    questo invece è lo script con il resize:
    Codice PHP:
    include 'connessione.php';
    ################################# VERIFICO CHE SIA STATO SELEZIONATO UN LAVORO TRAMITE ID
    if (isset($_POST['id'])){
    ########################### RECUPERO LE INFORMAZIONI SUL LAVORO
    $id $_POST['id'];
    $descrimg $_POST['didascalia'];
    $descring $_POST['didaeng'];
    $nome $_POST["nome"];

    #################################################### //VARIABILI IMPOSTABILI DALL'UTENTE
    $immagine_name $_FILES ['immagine']['name'];
    $immagine_size $_FILES ['immagine']['size'];
    $immagine_type $_FILES ['immagine']['type'];
    $immagine_tmp $_FILES ['immagine']['tmp_name'];
    $uppath "../allegati/img/works/$id"//PATH DOVE VERRANNO UPLOADDATI LE IMMAGINI
    $dimlim "si"//LIMITE DI DIMENSIONE [si o no]
    $formatolim "si"//LIMITE DI FORMATO [si o no]
    $size "900000"//LIMITE DI DIMESIONE
    $larg 800 //LIMITE LARGHEZZA
    //LIMITE ALTEZZA



    //Tutti i tipi di imagini
    $tipo1 "image/pjpeg"//Jpeg type 1
    $tipo2 "image/jpeg"//Jpeg type 2
    $tipo3 "image/gif"//Gif type
    $tipo4 "image/png"//Png type
    $tipo5 "image/bmp"//Bmp Type

    $log "minchiazza";

    //INIZIO UPLOAD

    //CONTROLLA SE LA STRINGA E' VUOTA
    if ($immagine_name == "") {
        
    $log "NESSUN FILE SELEZIONATO PER L'UPLOAD
    "
    ;
      }
    if (
    $immagine_name != "") {
        
    //
        //CONTROLLA SE IL FILE E' GIA' ESISTENTE
        
    if (file_exists("$uppath/$immagine_name")) {
            
    $log "L'IMMAGINE E' GIA' PRESENTE
    "
    ;
          } else {
            
    //
            //
            //CONTROLLA LA DIMEZIONE DEL FILE
            
    $errore=0;
            if (
    $dimlim == "si") {
                if (
    $immagine_size $size){
                    
    $errore=1;
                    
    $log "file troppo peasante, deve essere minore di $size byte
    "
    ;
                  }
              }
            
    //CONTROLLA IL FORMATO DELL'IMMAGINE
            
    if ($formatolim == "si"){
                list(
    $width$height) = @getimagesize($immagine_tmp);
                 
    //CALCOLO LA NUOVA ALTEZZA
                
    $alte = ($larg $height) / $width;
              }
            if (
    $errore==0){
                
    //CONTROLLA SE IL FILE E' UNA IMMAGINE
                
    if (($immagine_type == $tipo1) or ($immagine_type == $tipo2) or ($immagine_type == $tipo3) or ($immagine_type == $tipo4) or ($immagine_type == $tipo5)) 
                  {
                    
    //@copy($immagine, "$uppath/$immagine_name") or $log .= "Impossibile copiare l'immagine sul server<br
      
      
    $nomeimage stripslashes ($immagine_name); //nome dell'immagine o eventuale varibile da cui prendere il nome dell'immagine da cui si vuol fare la preview ;
      
    $cartella "$uppath/$immagine_name";
     
      
    #///////////////////////////////creazione preview con GD library
      
    $new_width $larg ;      //Larghezza immagine ridimensionata
      
    $new_height $alte ;      //Altezza immagine ridimensionata
      
    $compression =100;      //Compressione dell'immagine jpg
      
    $source_path "$immagine_tmp/";      //Diretory dove si trova il file di cui volgiamo fare la preview
      
    $destination_path "$uppath/" ;       //diretory dove vogliamo salvare l'immagine di preview
      
    $destination_pathT "$uppath/thumb/" 


      
    $thumbpath "$uppath/thumb/$immagine_name";
     
      
    #////////////////////////// PARAMETRI PER LA THUMBNAIL
     
      
    $T_height 342;
      
    $T_width = ($T_height $width) / $height;
     
                    
          global 
    $source_path;
          global 
    $destination_path;
          global 
    $destination_pathT;
          global 
    $destination_pathG;
          global 
    $new_width;
          global 
    $new_height;
          global 
    $T_width;
          global 
    $T_height;
        
          
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// CREAZIONE FULL SIZE 
          
          
    $destimg imagecreatetruecolor($new_width,$new_height) or die("Impossibile creare il file, c'è;¨ un problema nel salvataggio 
     <a href=\"javascript: history.back();\">TORNA</a>"
    );
          
    $srcimg imagecreatefromjpeg($source_path) or die("Problemi nell'aprire l'immagine 
     <a href=\"javascript: history.back();\">TORNA</a>"
    );
          
    imagecopyresized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento 
     <a href=\"javascript: history.back();\">TORNA</a>"
    );
          
    imagejpeg($destimg,$destination_path.$nomeimage,$compression) or die("Problemi nel salvataggio 
     <a href=\"javascript: history.back();\">TORNA</a>"
    );
          
          
          
    ////////////////////////////////////////////////////////////////////////////////////////////////////////// CREAZIONE THUMBNAIL        
          
    $destimgTimagecreatetruecolor($T_width$T_height) or die("Impossibile creare una miniatura per il file selezionato 
     <a href=\"javascript: history.back();\">TORNA</a>"
    );
          
    imagecopyresized($destimgT,$srcimg,0,0,0,0,$T_width,$T_height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento 
     <a href=\"javascript: history.back();\">TORNA</a>"
    );
          
    imagejpeg($destimgT,$destination_pathT.$nomeimage,$compression) or die("Problemi nel salvataggio 
     <a href=\"javascript: history.back();\">TORNA</a>"
    );        
          
                    
                    
                    if (
    file_exists("$uppath/$nomeimage")){
                      
    //INSERISCE I DATI DELL'IMMAGINE NEL DATABASE
                        
    mysql_query  ("INSERT INTO `img` ( `id` , `path` , `tpath` , `work`, `descrizione` , `description` ) VALUES ('', '$cartella' , '$thumbpath' , '$id' , '$descrimg' , '$descring');") or die (mysql_error());
                        
    $log "IMMAGINE CARICATA
    "
    ;
                      }
                       else {  print 
    "non ce l'ho fatta!";}
                  } 
                else 
                  {
                    
    $log "Il file scelto non &egrave;¨ una immagine [$tipo2$tipo3$tipo4 o $tipo5]
    "
    ;
                    
                  }
               }
          }
          }
    echo 
    "




    $log
    <br/ >


    "
    ;
    if (
    $log!="IMMAGINE CARICATA
    "
    ){

        echo 
    "
        <a href=\"addfile.php?id=
    $id&t=immagini&nome=$nome\">Seleziona un'altra immagine</a> 

        <a href=\"allegati.php?id=
    $id&t=immagini&nome=$nome\">Visualizza tutte</a>";
    } else {
        
    unlink($immagine_tmp);
        echo 
    "
        <a href=\"addfile.php?id=
    $id&t=immagini&nome=$nome\">Aggiungi un'altra immagine</a> 

        <a href=\"allegati.php?id=
    $id&t=immagini&nome=$nome\">Visualizza tutte</a>";
     }

     } else {

        echo 
    "
        

        

        <a href=\"javascript: history.back();\">Devi selezionare un file da Caricare</a>
        

        

        

        
    "
    ;
      
    }



    ?> 
    HA SEMPRE FUNZIONATO! In locale e su qualunque server l'abbia messo?
    Avete qualche idea?

  2. #2
    Il problema è che sourcepath che tu gli passi come parametro è la cartella dove c'è il file e non il nome del file (come dovrebbe essere). Mi riferisco al parametro che passi a imagecreatefromjpeg
    The Darkness™

    ________

    Annunci immobiliari

  3. #3
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    se /tmp/phpashE8x/ è un percorso nel tuo spazio leva lo slash iniziale tmp/phpashE8x/

    se invece stai facendo roferimento alla cartella tmp del server non puoi accedervi con aruba

  4. #4
    Grazie per le risposte...
    Il problema credo che sia proprio la cartella /tmp di Aruba.
    L'upload del file tramite il form mi manda il file in quella posizione, se stampo l'array di del file:

    Codice PHP:
    print_r($_FILES['immagine']); 
    mi da una cosa tipo

    Array ( [name] => nome.jpg [type] => image/jpeg [tmp_name] => /tmp/phpVJtfBa [error] => 0 [size] => 44440 )

    Stranamente funziona su tutti i server tranne quello su cui lo devo pubblicare !

    Come posso cambiare la cartella temporanea del file in upload?
    Devo configurare qualcosa sul server o devo cambiare metodo di upload?
    Quale metodo consigliate che permetta di specificare un percorso file temporaneo diverso?

  5. #5
    la cartella tmp è settata nel file ini di configuraione di php.
    Pero' puoi provare a fare una cosa: con
    ini_set('upload_tmp_dir', 'cartella/tmp/personalizzata');
    prova a vedere se cosi funziona..
    The Darkness™

    ________

    Annunci immobiliari

  6. #6
    Ho avuto l'illuminazione... e dire che era già tutto scritto e che era la prima cosa che mi avete suggerito!

    Codice PHP:
    $source_path "$immagine_tmp/";      //Diretory dove si trova il file di cui volgiamo fare la preview 
    no! no! no! -> failed to open stream: Not a directory

    ho tolto lo slash finale... e ora funziona.

    Codice PHP:
    $source_path "$immagine_tmp";      // FILE temporaneo!!! 
    Chissa come mai in locale funziona anche così? Bhà!
    Mi affido alla vostra clemenza, grazie per l'aiuto!

  7. #7
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    devi spostare il file, poi lo usi a tuo piacimento

    http://it2.php.net/manual/en/functio...oaded-file.php

  8. #8
    Grazie Ranma, ho già risolto...
    l'errore stava come avevi detto tu nella variabile $sourcepath che conteneva il percorso del file, però con uno slah finale di troppo!
    Ora funziona tutto... l'ho scritto nell'altro post. Grazie cmq!

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.