Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    43

    Problema permessi creazione immagini

    Ciao a tutti.
    Vi spiego subito il mio problema, relativo alla creazione di una photo gallery.
    Ho creato un semplice script che permette di creare delle thumb da delle immagini più grandi.
    Vi posto immediatamente il codice php:

    Codice PHP:
    function MakeThumb($file){
                    
        
    $path_parts=pathinfo($file);
        
        
    $extension=$path_parts['extension'];
        
    $dir=$path_parts['dirname'];
        
    $file_name=$path_parts['filename'];
        
        if (!(
    file_exists($dir."/thumb"))) 
        {
          
    mkdir($dir."/thumb/"0777);
          
    chmod($dir."/thumb"0777);  
        }
        
        
    $src_img=false;    
        
    $thumb_file=$dir."/thumb/".$file_name."_thumb.".$extension;
        if (!
    file_exists($thumb_file) || !CheckThumb($file,$thumb_file)){
        
                if (
    preg_match('/jpg|jpeg/i',$extension)){
                    
    $src_img=imagecreatefromjpeg($file)  or die ("Image not found!");
                }
                if (
    preg_match('/png/i',$extension)){
                    
    $src_img=imagecreatefrompng($file)  or die ("Image not found!");
                }
                if (
    preg_match('/gif/i',$extension)){
                    
    $src_img=imagecreatefromgif($file)  or die ("Image not found!");
                }
                
                if (
    $src_img) {
                    
    $width imagesx($src_img);
                    
    $height imagesy($src_img);
                    
    $twidth 150# width of the thumb 160 pixel
                    
    $theight $twidth $height $width# calculate height
                    
    $thumb = @imagecreatetruecolor ($twidth$theight) or die ("Can't create Image!");
                    
    imagecopyresized($thumb$src_img0000$twidth$theight$width$height);
                    
                    if (
    preg_match('/jpg|jpeg/i',$extension)){
                        
    Imagejpeg($thumb,$dir."/thumb/".$file_name."_thumb.".$extension);
                    }
                    if (
    preg_match('/png/i',$extension)){
                        
    Imagepng($thumb,$dir."/thumb/".$file_name."_thumb.".$extension); 
                    }
                    if (
    preg_match('/gif/i',$extension)){
                        
    Imagegif($thumb,$dir."/thumb/".$file_name."_thumb.".$extension); 
        
                    }
                    
                    
                    
                }
                
        }
        
        return 
    $thumb_file;
            

    Lo scenario è il seguente: c'è una cartella principale(es:foto), con delle sottocartelle(es: natale, carnevale) e ognuna ha delle immagini.
    Queste immagini vengo miniaturizzate e salvate nella sottocartella "thumb" (es:natale/thumb) allo stesso livello delle immagini.

    Non so perchè, ma in locale funziona tutto, ovvero crea la cartella thumb e ci mette dentro le miniature come dovrebbe.
    Invece su server non funziona :master: :master:
    Crea la cartella thumb, ma vuota !!!!!!!!!
    Credo sia un problema di permessi, ma la cartella contenitore di tutto (es:foto) è settata, imprudentemente, con 777, come del resto anche le altre sottocartelle (compresa thumb).

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    $dir cosa è? cioè in locale cosa è e sul server cosa è?
    altrimenti: che hosting hai WIN o LNX?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    43
    $dir cosa è? cioè in locale cosa è e sul server cosa è?
    $dir è il percorso del file, escluso il nome. Se l'immagine normale è in ./foto/natale/foto1.jpg, $dir='foto/natale'.
    Lo stesso in locale.

    Tieni conto che è tutto relativo, $file passato alla funzione non ha percorso assoluto, ma relativo, rispetto al chiamante. Può essere un problema ?
    Pensavo di no perchè thumb la crea nella posizione giusta....ma magari sbaglio qualcosa.....

    Il server è linux.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    43
    Ho provato anche su un altro spazio internet che avevo.
    Lì funziona bene e anche questo è uno spazio linux.
    Non saprei proprio....

    Avevo anche pensato fossero le librerie GD, ma sono abilitate....

    Nessuno che sappia aiutarmi ??

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    prova ad abilitare tutti gli errori, e togli da questa riga
    $thumb = @imagecreatetruecolor
    la @
    sennò..

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    43
    Ok, provo la tua soluzione e ti faccio sapere.
    Inoltre, magari non centra nulla, ma ho notato che a differenza del mio spazio, il sito in questione ha il safe_mode su on mentre sul mio è off.
    Può essere questo ??

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    ...ho il sospetto che c'entri qualcosa...
    se fai una ricerca con "safe_mode" sul forum troverai parecchie cose tra cui questa
    http://forum.html.it/forum/showthrea...hreadid=979020

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    43
    Infatti mi è venuto in mente di aggirare il problema con l'ftp, ovvero di creare la cartella tramite ftp e dargli i privilegi.
    Ma non sembra funzionare. Posto il codice ke va a sostituire mkdir.
    Codice PHP:
    if (!(file_exists($dir."/thumb"))) 
        { 
         
    /* mkdir($dir."/thumb",0777);
             chmod($dir."/thumb",0777);*/
      
           
    $conn_id=ftp_connect($host) or die ("Impossibile connettersi al server");
         

           
    $login_result=ftp_login($conn_id$username$pass);


          if(
    ftp_mkdir($conn_id$dir."/thumb")){
     echo
    "Cartella creata ".$dir."/thumb\n";
          }else{
     echo 
    "Errore".$dir."/thumb\n";
           }
            
    ftp_close($conn_id);

        } 
    Esce sistematicamente errore !!!
    Ancora il maledetto safe_mode ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    43
    Mi sono scordato di dire che se creo manualmente "thumb" entrando da ftp, il tutto funziona e le immagini vengono create.
    Il problema è questa cartella che non vuole saperne di essere creata !!!!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    43
    Ho risolto con l'ftp.
    Ci voleva il percorso assoluto.
    Con mkdir non va proprio, credo sia per via del safe_mode su on.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.