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:

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:

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:

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:

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

Задание 1

Skriv kode, der læser indholdet af en tekstfil:

  • index.php
  • /dir1//dir2/test.txt
Задание 2

Skriv kode, der læser indholdet af en tekstfil:

  • /script/index.php
  • /dir1//dir2/test.txt
Задание 3

Skriv kode, der læser indholdet af en tekstfil:

  • /script1//script2/index.php
  • /dir/test.txt
Задание 4

Skriv kode, der læser indholdet af en tekstfil:

  • /script1//script2//script3/index.php
  • /dir1//dir2//dir3/test.txt