Buongiorno a tutti, da un po' ho un problema che non riesco a risolvere.
Dopo svariati test e tentativi e ricerche su internet, mi rivolgo a voi nella speranza di trovare una

soluzione.
Devo realizzare una procedura di upload file in php, utilizzando istruzioni che permettano il

caricamento ftp. L'utente non deve far altro che "sfogliare", selezionare un file e premere il

pulsantino "upload".
Per completezza riporto in seguito il codice della pagina 1 (forma di selezione file) e della funzione

di upload.
In coda al messaggio riporto i dettagli sull'errore restituito.


//PAGINA 1: FORM DI UPLOAD
<html>
<body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff"

link="#0000ff">
<form action="include/_ftp.php" method=POST enctype="multipart/form-data" name="Attachments">
<input type=hidden name=box value="">
<tr>
<td nowrap width="1%">Image:</td>
<td colspan=2>
<input type=file name=source_file size=20>
<input type="hidden" name="MAX_FILE_SIZE" value="83886080">



</td>
</tr>
<input type=submit name=btnSubmit value=Submit size=20 style="border: 1px solid #0000FF"></form>
</body>
</html>



//PAGINA 2: CODICE PER IL TRASFERIMENTO FTP
<?php
$ftp_server="xxx";
$ftp_user_name="xxx";
$ftp_user_pass="xxx";
// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name
";
exit;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name
";
}

// turn passive mode on
ftp_pasv($conn_id, true);

//directorylike /www.velibaba.com/images
echo "
chdir public: ".ftp_chdir($conn_id, "public");
echo "
timeout: ".ftp_get_option($conn_id, FTP_TIMEOUT_SEC);
echo "
autoseek: ".ftp_get_option($conn_id, FTP_AUTOSEEK);


$destination_file="_x.tmp";
echo ("
");
echo ("
$destination_file ==> $source_file ( $_POST[source_file] )
");
echo ("
");

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}

// close the FTP stream
ftp_quit($conn_id);
?>


Ho testato lo stesso codice su 3 diversi siti, situati su tre diversi server di cui uno linux e gli

altri windows.
Risultato: su due host (uno linux e uno windows 2000) non ci sono problemi e l'output a video è il

seguente:

Connected to xxx, for user xxx
chdir public: 1
timeout: 90
autoseek: 1
Uploaded C:\WINNT\TEMP\php1759.tmp to hosthosthost as _x.tmp


Sul terzo, alcuni file vengono caricati, ma la maggior parte no. Apparentemente non ci sono criteri...

i file caricati sono di svariate dimensioni e contenuto, come quelli non caricati. Insomma, non sembra

un problema di dimensioni del file o altro.
Il risultato, a video, è il seguente:

Connected to xxx, for user xxx
chdir public: 1
timeout: 90
autoseek: 1
FTP upload has failed!

Quindi l'istruzione:
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
restituisce semplicemente un bello zero.........

Ho provato a cambiare un po' il codice, ftp passivo, autoseek, FTP_ASCII al
posto di binary ecc... ma... nessun cambiamento.
Brancolo nel buio.
Qualcuno sa darmi una mano?
Spero di aver documentato tutto con completezza e non aver dimenticato nulla.
Grazie anticipate.