Script PHP per salvare una variabile su FTP

Script PHP per salvare una variabile su FTP

La procedura per copiare un file attraverso il protocollo FTP utilizzando il linguaggio PHP è piuttosto semplice e ben documentata. Per prima cosa si apre una connessione con il server FTP e si effettua il login, poi si entra nella directory di destinazione ed infine si copia un file con la funzione ftp_put() che accetta come parametro di origine il percorso di un file locale.

Fin qui tutto semplice, però se il file di origine non esiste e vogliamo salvare il contenuto di una variabile in un server FTP, come si può fare?

Una possibile soluzione potrebbe essere quella di salvare il contenuto della variabile in un file locale, poi trasferirlo nel server FTP di destinazione ed infine cancellare il file. Il sistema può funzionare ma è decisamente macchinoso.

Esiste però una soluzione un po' più facile.

Il linguaggio PHP prevede infatti la funzione ftp_fput() che, a differenza della funzione sopracitata, ha come parametro di origine dei dati un puntatore ad un file aperto.

Si può quindi prendere spunto dalla prima soluzione sfruttando la funzione tmpfile() che crea un file temporaneo, quindi con una semplice fwrite() si inserisce nel file il contenuto della variabile in oggetto. Il file temporaneo sarà quindi usato come origine della funzione di upload ftp_fput(). Dopodiché basterà chiudere il file temporaneo che sarà quindi eliminato automaticamente.

N.B: dopo la funzione fwrite() la posizione del puntatore del file va resettata con rewind(). Ecco il codice per la creazione del file temporaneo:

<?php
$temp = tmpfile();
fwrite($temp, "stringa da inserire nel file");
rewind($temp);
[...]
fclose($temp);
?>

Per concludere ecco un codice semplificato per salvare il contenuto di una variabile in un file remoto tramite FTP con il linguaggio PHP:

<?php

// Parametri di connessione
$user = 'username';
$pass = 'password';
$host = 'ftp.example.com';

// Apertura connessione FTP
$ftpconn = ftp_connect($host) or die ("Impossibile aprire la connessione");

// Login
ftp_login($ftpconn, $user, $pass) or die ("Autenticazione fallita");

// Creazione del file temporaneo con la stringa di origine
$temp = tmpfile();
fwrite($temp, 'La stringa da salvare');
rewind($temp);

// Apertura della directory dove verrà effettuato l'upload
ftp_chdir($ftpconn, 'percorso remoto') or die ("Impossibile entrare nella directory selezionata");

// Upload del File temporaneo
ftp_fput($ftpconn, 'nome file destinazione', $temp, FTP_ASCII) or die ("Impossibile effettuare l'upload");

// Chiusura della connessione
ftp_close($ftpconn);

// Chiusura del file temporaneo (e quindi eliminazione dello stesso)
fclose($temp);

?>

Ovviamente questo è solo un esempio (funzionante) che andrà modificato in base alle proprie esigenze.