Percorsi relativi in PHP
Come già sapete, nel parametro della funzione file_get_contents
si dovrebbe scrivere il nome del file. Questo, tuttavia, funziona
solo se il file da leggere si trova
nella stessa cartella da cui viene eseguito il nostro script.
Se invece il file si trova in un'altra posizione, allora nel parametro della funzione è necessario scrivere il percorso per raggiungere quel file.
Vediamo un esempio.
Esempio
Supponiamo di avere la seguente struttura di file:
- index.php
- /directory/
- test.txt
Leggiamo il contenuto del file di testo. Per fare ciò, oltre al nome del file, avremo bisogno di specificare anche la cartella in cui si trova:
<?php
echo file_get_contents('directory/test.txt');
?>
Esempio
Supponiamo di avere la seguente struttura di file:
- /script/
- index.php
- test.txt
In questo caso, il tentativo di leggere il nostro file, specificando come percorso il suo nome, si concluderà con un errore:
<?php
echo file_get_contents('test.txt'); // darà un errore
?>
Perché viene generato un errore? Il fatto è che nel parametro della funzione abbiamo scritto il nome del file. Ciò significa che il file da leggere dovrebbe trovarsi nella stessa cartella dell'eseguibile.
Tuttavia, il nostro file da leggere si trova un livello più in alto, cioè nella cartella che contiene la cartella dello script.
In questo caso dobbiamo indicare esplicitamente nel percorso
del file, che questo file deve essere cercato un livello
più in alto. Per fare ciò, prima del nome del file è necessario
scrivere ../. Facciamolo:
<?php
echo file_get_contents('../test.txt'); // il file verrà letto
?>
Esempio
Supponiamo di avere la seguente struttura di file:
- /script/
- index.php
- /directory/
- test.txt
In questo caso, durante la lettura del file, prima usciremo di un livello, e poi indicheremo il percorso verso il nostro file relativamente a quel livello:
<?php
echo file_get_contents('../directory/test.txt');
?>
Esempio
Supponiamo di avere la seguente struttura di file:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
In questo caso, avremo bisogno di risalire di due livelli:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Problemi pratici
Scrivi il codice che leggerà il contenuto del file di testo:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Scrivi il codice che leggerà il contenuto del file di testo:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Scrivi il codice che leggerà il contenuto del file di testo:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Scrivi il codice che leggerà il contenuto del file di testo:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/