Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Home ~ Php :: Upload di file tramite FTP con PHP :: Indice Php

Upload di file tramite FTP con PHP

Categoria: Php Inserito il: 02-03-2008 Stampa (52023 click)

L'invio di file verso remoto tramite le funzioni di PHP dedicate al protocollo FTP è un'operazione abbastanza semplice; in questo breve articolo mostreremo uno script in grado di connettersi e autenticarsi ad un server FTP e di inviare un file nella root del nostro spazio Web.

Innanzitutto dovremo indicare i dati necessari alla connessione, questi sono quelli classici: indirizzo FTP, nome dell'utente autorizzato e relativa password.
In secondo luogo definiremo due variabili che verranno valorizzate con il nome del file da uploadare e il nome che lo stesso file acquisirà una volta inviato in remoto.

Nel caso specifico il file da uploadare si trova sullo stesso percorso della pagina contenente lo script, mentre il precorso di destinazione è quello più semplice: la root dello spazio Web.

La connessione al server FTP avviene attraverso una funzione nativa apposita denominata ftp_connect(), questa richiede come parametri il nome del host a cui si desidera connettersi e la "porta di ascolta" che il server utilizza per le chiamate, generalmente si tratta della porta "21".

ftp_login() è invece la funzione che ci permette di autenticarci con il server FTP, essa accetta come parametri i dati di connessione definiti all'inizio del nostro listato.

Una volta connnessi e autenticati, la funzione ftp_put() si occuperà dell'invio del file a destinazione; da notare l'utilizzo del parametro FTP_ASCII che specifica il tipo di upload, usando il formato ASCII (American Standard Code for Information Interchange, cioè "Codice Standard Americano per lo Scambio di Informazioni") eviteremo infatti che il file possa subire delle alterazioni durante il trasferimento.

Se l'upload ha avuto successo, sarà possibile anche impostare i permessi sul file di destinazione, per questa evenienze PHP 5 ci mette a disposizione l'apposita funzione ftp_chmod(); resta però il problema per coloro che lavorano con macchine dotate di versioni più datate di PHP, quindi è stato necessario definire un'apposita funzione (chiamata sempre ftp_chmod()) che consengua lo stesso risultato.

Una volta impostati i permessi desiderati, sarà possibile chiudere la connessione al server FTP con l'apposita funzione ftp_close().

Di seguito riportiamo il codice completo della nostra applicazione con tanto di commenti esplicativi.

<?php
// dati di connessione al server FTP
$server = 'ftp.mrwebmaster.it';
$username = 'username';
$password = 'password';

// indichiamo all'applicazione il file locale da uploadare
// e il suono nome nel percorso di destinazione
$file = 'file.txt';
$percorso_ftp = 'nuovo.txt';

// connettiamoci al server FTP
// generalmente in ascolto alla posta 21
$connessione = ftp_connect($server, 21) 
 or die ('Impossibile connettersi al server.');

// autentichiamoci al server
ftp_login($connessione, $username, $password) 
 or die('Username o password errati.');

// nel caso ce ne sia la necessità abilitiamo
// il passive mode, 
//diversamente potremo commentare la riga seguente
ftp_pasv ($connessione, true);

// uploadiamo il file
$invia = ftp_put($connessione, $percorso_ftp, $file, FTP_ASCII);

// notifica dell'esito dell'upload
echo (!$invia) ? 'Upload fallito' : 'Upload completato';
echo '<br>';

// questa funzione sostituisce ftp_chmod
// per chi utilizza versioni di PHP inferiori alla 5
if (!function_exists('ftp_chmod')) {
 function ftp_chmod($invio_ftp, $c_mode, $nome_file){
  return ftp_site
   (
   $invio_ftp, sechof('CHMOD %o %s', $c_mode, $nome_file)
   );
 }
}

// rendiamo il file scrivibile con il chmod 0666
if (ftp_chmod($connessione, 0666, $percorso_ftp) !== false) {
 echo $percorso_ftp . ' Permessi aggiornati correttamente';
 } else {
 echo 'Impossibile impostare i permessi su ' . $file;
}

// chiudiamo la connessione al server FTP
ftp_close($connessione);
?>

Cerca nel sito
Per sito
Sviluppatore di applicazioni Web con competenze evolute nella progettazione delle basi di dati, autore per alcune delle più importanti testate on line dedicate alla manualistica tecnica (HTML.it, MrWebmaster.it, Edit) e consulente per l'e-learning.
Tutte le categorie
Tutorial Random
I permessi su file e cartelle in UNIX
I permessi su un file o su una cartella riguardano la possibilità di agire su un determinato contenuto da parte... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti