Il sistema più comodo per caricare file e creare cartelle sul vostro sito è di usare filemanager predisposti. Uno dei migliori, che uso da sempre, è Filezilla: completo, facile da usare e supporta anche il drag & drop (trascinamento) dei file dal vostro pc a Filezilla stesso.
Non sempre, però, c’è la possibilità di connettersi tramite filemanager. Può capitare che il server stesso dia delle limitazioni oppure, più comunemente, può capitare di dover assegnare dei permessi a qualche utente esterno affinché carichi lui stesso file e cartelle nel server.
In questi casi possiamo affidarci a una semplice funzione, che vi propongo qui sotto. I commenti dovrebbero essere sufficienti per comprendere il suo uso.
Trovate la funzione anche nello script linkato di seguito, liberamente scaricabile.
Download script
La funzione per creare cartelle tramite ftp
Nell’esempio creiamo la cartella “immagini” nella root del sito. Imposteremo a questa cartella i permessi 0666 (cioè scrittura e lettura per chiunque).
Gli unici parametri che dovete procurarvi sono quelli di connessione all’ftp del vostro server, quindi host, username e password. Non serve altro.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function ftp_creadir($dirname) { $dirname = "public_html/".$dirname; //percorso della cartella $host="localhost"; $user="username"; $pass="password"; $conn_id=ftp_connect($host); $login_result=ftp_login($conn_id, $user, $pass); if((!$conn_id) or (!$login_result)){ //testo di errore die; } ftp_mkdir($conn_id, $dirname); //crea la cartella ftp_chmod($conn_id, 0666, $dirname); //setta i permessi di scrittura e di lettura per chiunque ftp_quit($conn_id); //chiude la connessione ftp } ftp_creadir("immagini"); //crea la cartella "immagini" tramite ftp, con permessi di scrittura e lettura |
Ftp_chmod per dare i permessi alla cartella
Il php5 ci mette a disposizione una funzione chiamata ftp_chmod()
, che ha lo scopo di settare i permessi di una cartella o di un file passato. Accoglie tre parametri: la connessione, il tipo di permessi da dare alla cartella (numerici) e il nome della cartella.
Se lavoriamo in php5, quindi, la funzione di seguito non è necessaria. Nel caso ci troviamo davanti a versioni precedenti, invece, la funzione ftp_chmod()
non esiste e dovremmo crearla ad hoc. Vi basta comunque copiare la funzione seguente nella stessa pagina della precedente, senza modificarla.
1 2 3 4 5 6 7 |
function ftp_chmod($ftpstream, $chmod, $file) { $old=error_reporting(); //salva in una variabile gli eventuali errori error_reporting(0); $result=ftp_site($ftpstream, "CHMOD ".$chmod." ".$file); error_reporting($old); return $result; } |