Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Cannot modify header information - headers already sent by

    Ciao a tutti!

    Ho provato a fare una ricerca, ma tutte le soluzioni che ho trovato non vanno...
    Ho questo pezzo di codice PHP:

    codice:
    .....
    
    // upload del file
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 
    
    // controllo dello stato di upload
    if(!$upload)
    	{	
    	 $error = 2;
    	}
        	
    // se tutto va per il verso giusto (connessione FTP e upload)
    else
    	{   			 	
     	 $error = 0;
    	}
    
    // chiudere il flusso FTP 
    ftp_quit($conn_id);
    }
    		
    header("location:addimage.php?error={$error}");
    se si finisce nell'else, e quindi $error=0, l'header(location: ...) non mi da' nessun errore, funziona alla perfezione, mentre se si finisce nel ramo "if(!upload)" ottengo il classico warning "Cannot modify header information - headers already sent by...".

    Ho controllato che nell'unico file che includo e in questo non ci siano ne' echo ne' tags HTML...

    Il warning dice "output started at ..." riga 52, che e' questa:

    codice:
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

    che in pratica e' la condizione dell'if.
    Sembra come se, nel caso in cui l'upload vada a buon fine, non venga mandato niente in output, mentre se c'e' qualche errore (per esempio se il file da uploadare gia' esiste), l'errore viene inviato in output, generando il warning quando si richiama la funzione header...

    Se e' cosi', come posso evitarlo?

    Grazie!

  2. #2
    Sto notando ora che quasi sicuramente la stampa a video di quest'altro warning

    "Warning: ftp_put(): Permission denied in .../uploadimage.php on line 52"

    che esce fuori nel caso il file da caricare gia' esista, causa il suddetto problema!

    Credo che io debba cercare di evitare che, in caso di errore di upload, non venga stampato il warning a video per la funzione ftp_put...

  3. #3
    Ok, ho risolto...
    Avevo ragione, era la stampa di quel warning che generava anche il secondo warning dell'header...
    E' bastato disabilitare i warning da codice e riabilitarli ubito dopo la chiamata di ftp_put, in questo modo:

    codice:
    // upload del file
    error_reporting ( E_ALL ^ (E_NOTICE | E_WARNING) );
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 
    error_reporting ( E_ALL ^ E_NOTICE );
    cosi' funziona tutto perfettamente.

  4. #4
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913
    Si, esatto, è lo warning.

    Se vuoi provare a disabilitare l'output dello warning solo x quella funzione prova a fare così:
    Codice PHP:
    $upload = @ftp_put($conn_id$destination_file$source_fileFTP_BINARY); 
    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

  5. #5
    ah, ottimo, cosi' e' piu' compatto
    Grazie!

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.