Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558

    Controllo esecuzione funzione con OR DIE

    Prima di tutto volevo scusarmi per il titolo del post, ma proprio non sapevo come esprimere in poche parole il mio problema. Ora ci provo meglio. Sto implementando un album fotografico ed ho il seguente codice, che controlla l'aggiunta di un immagine ad un album

    Codice PHP:
    /* This function add an image to the album */
    function add_image($id$img_name$img_tmp_name$description) {
        
    // Rename img_name
        
    $img rename_file($img_name);    // The renamed file to save in gallery.xml; In upload function
                                                                                                                                // I pass the img_file that is not renamed; it's renaming in
                                                                                                                                // upload function
        
    $album_path db_get_album_path($id);
        
    // Upload image in IMAGES_DIR
        
    if(upload($img_name$img_tmp_namePHOTO_GALLERY_DIR.$album_path.'/images/')) {
            
    // Change permission
            
    chmod(PHOTO_GALLERY_DIR.$album_path.'/images/'.$img0766);
            
    $doc DOMDocument::load(PHOTO_GALLERY_DIR.$album_path.'/gallery.xml');
            
    // Get root element
            
    $root $doc->getElementsByTagName('simpleviewerGallery');
            foreach(
    $root as $node) {
                
    //add <image> element to <simpleviewGallery> 
                
    $image $node->appendChild($doc->createElement('image')); 
                
    // Add <filename> to<image>
                
    $file_name $image->appendChild($doc->createElement('filename')); 
                
    // Add <filename> text node element to <filename> 
                
    $file_name->appendChild($doc->createTextNode($img)); 
                
    // Add <caption> to<image>
                
    $caption $image->appendChild($doc->createElement('caption')); 
                
    // Add <caption> text node element to <caption> 
                
    $caption->appendChild($doc->createTextNode(stripslashes($description)));
                
    // Generate xml 
                
    $doc->formatOutput true// set the formatOutput attribute of domDocument to true
                
    $doc->saveXML();
                
    // Save as file   
                
    $doc->save(PHOTO_GALLERY_DIR.$album_path.'/gallery.xml');
                
    // Resize the image
                
    @pvt_resize_image($album_path$img) or die('No resize');
                    
    //'<script type="text/javascript" src="'.JS_ADMIN_DIR.'photo-gallery/error-add-image.js"></script>');
                // Create thumbnail
                
    @pvt_create_thumbnail($album_path$img) or die('No thumbs');
                    
    /*'<script type="text/javascript" src="'.JS_ADMIN_DIR.
                        'photo-gallery/error-add-image.js"></script>');*/
                
    echo '<script type="text/javascript" src="'.JS_ADMIN_DIR.
                    
    'photo-gallery/success-add-image.js"></script>';
            } 
        } else {
                echo 
    '<script type="text/javascript" src="'.JS_ADMIN_DIR.
                    
    'photo-gallery/error-add-image.js"></script>';
            }

    Come si può notare, interagisco con il file gallery xml di SimpleViewer; comunque, verso la fine della funzione richiamo le funzioni pvt_resize_image() e pvt_create_thumbnail(), con il controllo or die che mi permette di controllare il regolare svolgimento della stessa. Ora quando esegue la funzione pvt_resize_image() mi da errore e quindi entra nel ramo or die, stampando No resize. La cosa strana è che comunque il resize dell'immagine viene eseguito!!! Questo è il codice per il resize, con relativo debug:

    Codice PHP:
    /* Resize the image */
    function pvt_resize_image($album_path$img) {    
        
    // Original image information
        
    list($width$height$type$attr) = 
            
    getimagesize(PHOTO_GALLERY_DIR.$album_path.'/images/'.$img);
        echo 
    'Fatto list';
        
    // Creo la versione 480*360 dell'immagine
        
    $thumb imagecreatetruecolor(480360);
        echo 
    'Fatto thumbs';
        
    $source imagecreatefromjpeg(PHOTO_GALLERY_DIR.$album_path.'/images/'.$img);
        echo 
    'Fatto source';
        
    imagecopyresized($thumb$source0000480360$width$height);
        echo 
    'Fatto imageCopyResizw';
        
    // Salvo l'immagine ridimensionata
        
    imagejpeg($thumbPHOTO_GALLERY_DIR.$album_path.'/images/'.$img75);
        echo 
    'Fatto imagejpeg';

    Tutti gli echo vengono stampati, quindi - se non erro - la funzione viene eseguita completamente senza problemi. Dove può stare l'errore? Possibile che sia sulla funzione che richiamo subito dopo, pvt_create_thumbnail()? Però non ho la stampa di errore No thumbs!!! Anche se la thumbs non viene creata.
    Il fatto strano è che questo script, così senza modifiche, funzionava fino a qualche giorno fa, senza essere trasportato su server, ma sempre in locale.
    Qualcuno ha qualche idea? Io veramente non so più dove sbattere la testa.
    Mi scuso sin d'ora per la mole del post e per una eventuale mancanza di chiarezza
    E grazie in anticipo a quanti volessero intervenire per aiutarmi, perchè la situazione è veramente paradossale se non assurda

  2. #2
    La funzione pvt_resize_image non contiene nessuna istruzione return quindi ritorna sempre NULL, di conseguenza die() viene sempre eseguito.

    Ti conviene testare il valore di ritorno delle funzioni GD che usi e uscire dalla funzione con FALSE in caso di errore, per esempio

    $thumb = imagecreatetruecolor(480, 360);
    if(!$thumb) { return false; }

    fai lo stesso per le altre funzioni, poi come ultima istruzione di pvt_resize_image metti

    return true;

  3. #3
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Grazie, proverò a fare come hai detto...ma ancora non capsco come mai prima funzionasse ed ora no!!! L'unica cosa che mi viene in mente è che ho aggiornato apache2 (sulla mia debian)...potrebbe dare problemi? Mah!!! Misteri dell'informatica!!!
    Grazie

  4. #4
    Sei sicuro sia stato sempre così con quella or die()? Perché non è che non funziona, tutte le istruzioni dentro pvt_resize_image sono eseguite solo che poi in ogni caso esegue il die e lo script termina in quel punto.

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.