Layer 06

Scrivere un file sul server

– fopen ( string filename, string mode [, int use_include_path])
– fclose ( int fp)
– fwrite ( int fp, string string [, int length])

Consiglio come sempre di leggere l’esaustiva guida presente sul sito ufficiale di php.net a questo indirizzo: guida sul filesystem di php >>

Per scrivere un file sul server per prima cosa dobbiamo sapere cosa scrivere sul file, quindi allochiamo una variabile $corpo che conterrà il contenuto effettivo del file che si vuole andare a scrivere:

$corpo= "hai aperto il file che è stato scritto sul server";

Fatto ciò dobbiamo conoscere due cose essenziali, la posizione fisica del sile sul server, non relativa (per server *nix sarà tipo /home/user/fileuploaded, per sistemi M$ C:inetpubsitouploaded) e per seconda cosa il nome del file :-):

$nomeCompleto="/usr/website/first/nome.txt";

PHP ci permette di allocare un puntatore ad un file utilizzando la funzione fopen() in questo modo:

$fp = fopen($nomeCompleto, "w");

Come si può notare ho utilizzato l’opzione w per indicare che il file che sto tentando di aprire lo aprirò in scrittura (w=write)

Possiamo scrivere su file:

fwrite($fp, $corpo);

e quindi chiudere il file per completare l’opera:

fclose ($fp);

Riassumendo, lo script per scrivere un file su disco del server è il seguente:

$corpo= "hai aperto il file che è stato scritto sul server";
// contenuto del file
$nomeCompleto="/usr/website/first/nome.txt";
// nome fisico del file
$fp = fopen($nomeCompleto, "w");
// apertura in srittura del file
fwrite($fp, $corpo);
// scrittura del file
fclose ($fp);
// chiusura del file

Usando un po’ di fantasia si può pensare di scrivere anche un programmino in php che genera dei file in php 🙂 basta solo stare attenti ai $ delle variabili ed a " che non chiudano la stringa o non vengano interpretati in altro modo.

Attenzione in caso di collisione di nome di file il file scritto verrà sostituito in toto ovviamente nel caso in cui ci siano i permessi necessari.]]>