Upload di file via ftp tramite php


Tramite specifiche funzioni php è possibile avviare una sessione ftp per trasferire dei file da un server ad un altro, per farlo prendere come esempio il seguente codice:

<?php
// indirizzo del server ftp su cui fare l’upload del file
$ftp_server = "ftp.ftpserver.com";
// username del server ftp
$ftp_user_name = "username";
// password del server ftp
$ftp_user_pass = "password";
// nome del file locale da trasferire
$local_file = "local_dir/local_file";
// nome del file di destinazione
$destination_file = "dest_dir/dest_file";
// Connessione al server ftp
$conn_id = ftp_connect($ftp_server);
// Risultato della connessione
if (!$conn_id) {
    echo "Impossibile connettersi al server $ftp_server!";
    die();
}
else {
    echo "Connesso a $ftp_server.\n";
}
// Login sul server
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Risultato del login
if (!$login_result) {
    echo "Login fallito!";
    die();
}
else {
    echo "Login ok.";
}
// Trasferimento del file
if (ftp_put($conn_id, $destination_file, $local_file, FTP_ASCII)) {
    echo "$local_file trasferito!\n";
}
else {
    echo "Errore durante il trasferimento di $local_file\n";
}
// Chiusura della connessione
ftp_close($conn_id);
?>
 

6 Responses to “Upload di file via ftp tramite php”

  1. DuMbSiM Says:

    Molto bello lo script.. Peccato che non mi funziona.. Probabilmente sbaglio la la scrittura del $local_file..

    Io lo scrivo così:
    $local_file = “/home/dumbsim/win_xp/pittogrammi/freeware.png”;

    C’è qualcosa di sbagliato?

  2. admin Says:

    Se il file esiste in quella locazione è giusto.
    Ricordati che il nome del file lo devi mettere anche in $destination_file, quindi nel tuo caso:
    $destination_file = “freeware.png”;
    Tutto questo sempre che riesci a superare la procedura di login, fammi sapere.

  3. DuMbSiM Says:

    //faccio l’upload del file
    $file = ftp_put ($stream, “trick.txt”, “/home/dumbsim/Documenti/trick.txt”, FTP_ASCII);

    //controllo l’upload del file
    if ($file) {echo “Il file è stato uploadato con successo.”;}
    else {echo “Il file non è stato uploadato con successo.”;}

    io uso questo codice. e come output mi dice: Il file non è stato uploadato con successo.

    Dove potrebbe essere l’errore? La connessione funziona, il login viene effettuato, se gli dico di creare o cancellare una cartella funziona.

  4. admin Says:

    Una motivazione che mi viene in mente è che il file che stai tentando di caricare è abbastanza grande e l’upload non finisce nei 30 secondi massimi che ha a disposizione uno script php. In tal caso ti basta mettere l’istruzione
    set_time_limit(0);
    come prima istruzione dello script.
    Altra possibile motivazione può essere che il server ftp su cui tenti di fare l’upload necessiti una connessione passiva e non attiva, in tal caso appena dopo il login usa l’istruzione
    ftp_pasv($conn_id, true);
    per abilitare la modalita passiva sulla connessione.

  5. gek Says:

    ciao nn riesco a fare funzionare il codice o meglio quando carico il file e dovrebbe salvarlo con ftp_put mi dà il seguente errore Permission denied

    a cosa è dovuto ? come faccio a risolverlo ? attendo una tua risposta grazie

  6. admin Says:

    Ciao, come puoi ben intuire dal messaggio di errore il problema consiste nel fatto che l’utente con cui fai il login non ha i permessi necessari per scrivere nella directory nella quale stai tentando di fare l’upload. Usando un qualsiasi client ftp, loggandoti con lo stesso username e password e tentando di caricare lo stesso file nella stessa directory dovresti ottenere lo stesso errore. Prova a cambiare (se puoi) i permessi della directory mettendo il permesso di scrittura a tutti gli utenti e vedi se cosi funziona

Lascia un commento

Categorie

Cerca

Meta