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:
index.php<?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:
script/index.php<?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<?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:
script/index.php<?php
echo file_get_contents('../directory/test.txt');
?>
Eksempel
Antag, at vi har følgende filstruktur:
- /script//test/index.php
- /directory/test.txt
I dette tilfælde bliver vi nødt til at gå op to gange:
script/test/index.php<?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
Skriv kode, der læser indholdet af en tekstfil:
- /script/index.php
- /dir1//dir2/test.txt
Skriv kode, der læser indholdet af en tekstfil:
- /script1//script2/index.php
- /dir/test.txt
Skriv kode, der læser indholdet af en tekstfil:
- /script1//script2//script3/index.php
- /dir1//dir2//dir3/test.txt