Relative stier i PHP
Som du allerede ved, skal filnavnet skrives i parameteren for funktionen file_get_contents.
Dette virker dog kun, hvis den læste fil ligger
i den samme mappe, hvor vores script køres.
Hvis filen ligger et andet sted, skal stien til denne fil skrives i funktionens parameter.
Lad os se på et eksempel.
Eksempel
Antag, at vi har følgende filstruktur:
- index.php
- /directory/
- test.txt
Lad os læse indholdet af tekstfilen. For at gøre dette skal vi ud over filnavnet også angive mappen, hvor den ligger:
<?php
echo file_get_contents('directory/test.txt');
?>
Eksempel
Antag, at vi har følgende filstruktur:
- /script/
- index.php
- test.txt
I dette tilfælde vil et forsøg på at læse vores fil ved at angive dens navn som sti, resultere i en fejl:
<?php
echo file_get_contents('test.txt'); // vil give en fejl
?>
Hvorfor opstår der en fejl? Grunden er, at vi skrev filnavnet i funktionens parameter. Det betyder, at den læste fil skal være placeret i den samme mappe som den kørende script.
Men vores fil, der skal læses, er placeret et niveau over, det vil sige i den mappe, som indeholder mappen med scriptet.
I sådanne tilfælde skal vi eksplicit angive i stien
til filen, at denne fil skal søges et niveau
over. For at gøre dette skal ../ skrives
foran filnavnet. Lad os gøre det:
<?php
echo file_get_contents('../test.txt'); // filen vil blive læst
?>
Eksempel
Antag, at vi har følgende filstruktur:
- /script/
- index.php
- /directory/
- test.txt
I dette tilfælde, når vi læser filen, skal vi først gå et niveau op og derefter angive stien til vores fil i forhold til dette niveau:
<?php
echo file_get_contents('../directory/test.txt');
?>
Eksempel
Antag, at vi har følgende filstruktur:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
I dette tilfælde bliver vi nødt til at gå op to gange:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Praktiske opgaver
Skriv kode, der læser indholdet af en tekstfil:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Skriv kode, der læser indholdet af en tekstfil:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Skriv kode, der læser indholdet af en tekstfil:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Skriv kode, der læser indholdet af en tekstfil:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/