Relative stier i PHP
Som du allerede vet, skal filnavnet skrives
i parameteren til funksjonen file_get_contents.
Dette fungerer imidlertid kun hvis filen som leses
ligger i samme mappe som skriptet vårt kjøres fra.
Hvis filen ligger et annet sted, må stien til denne filen skrives i funksjonens parameter.
La oss se på et eksempel.
Eksempel
Anta at vi har følgende filstruktur:
- index.php
- /directory/
- test.txt
La oss lese innholdet i tekstfilen. For å gjøre dette, trenger vi i tillegg til filnavnet å spesifisere mappen den ligger i:
<?php
echo file_get_contents('directory/test.txt');
?>
Eksempel
Anta at vi har følgende filstruktur:
- /script/
- index.php
- test.txt
I dette tilfellet vil et forsøk på å lese filen vår ved å angi filnavnet som sti, resultere i en feil:
<?php
echo file_get_contents('test.txt'); // vil gi en feil
?>
Hvorfor oppstår det en feil? Grunnen er at vi skrev filnavnet i funksjonsparameteren. Dette betyr at filen som leses skal være plassert i samme mappe som den som kjøres.
Imidlertid er filen vår et nivå høyere, det vil si i mappen som inneholder mappen med skriptet.
I så fall må vi eksplisitt angi i stien
til filen at denne filen skal søkes et nivå
høyere. For å gjøre dette, skal
../ skrives foran filnavnet. La oss gjøre det:
<?php
echo file_get_contents('../test.txt'); // filen vil bli lest
?>
Eksempel
Anta at vi har følgende filstruktur:
- /script/
- index.php
- /directory/
- test.txt
I dette tilfellet, når vi leser filen, går vi først opp et nivå, og deretter angir vi stien til filen vår i forhold til dette nivået:
<?php
echo file_get_contents('../directory/test.txt');
?>
Eksempel
Anta at vi har følgende filstruktur:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
I dette tilfellet må vi gå opp to nivåer:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Praktiske oppgaver
Skriv kode som leser innholdet i tekstfilen:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Skriv kode som leser innholdet i tekstfilen:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Skriv kode som leser innholdet i tekstfilen:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Skriv kode som leser innholdet i tekstfilen:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/