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.