Santykiniai keliai PHP

Kaip jau žinote, į funkcijos file_get_contents parametrą reikia rašyti failo pavadinimą. Tai, tačiau, veikia tik tuo atveju, jei skaitomas failas yra tame pačiame kataloge, kuriame paleidžiamas mūsų scenarijus.

Jei failas yra kitoje vietoje, tada į funkcijos parametrą reikia rašyti kelią iki to failo.

Pažiūrėkime pavyzdžiu.

Pavyzdys

Tarkime, kad turime tokią failų struktūrą:

Perskaitykime teksto failo turinį. Tam, be failo pavadinimo, mums reikės nurodyti ir katalogą, kuriame jis yra:

index.php<?php
  echo file_get_contents('directory/test.txt');
?>

Pavyzdys

Tarkime, kad turime tokią failų struktūrą:

Tokiu atveju bandymas perskaityti mūsų failą, nurodant jo pavadinimą kaip kelią, baigsis klaida:

script/index.php<?php
  echo file_get_contents('test.txt'); // išmes klaidą
?>

Kodėl išmetama klaida? Esmė ta, kad mes į funkcijos parametrą parašėme failo pavadinimą. Tai reiškia, kad skaitomas failas turi būti tame pačiame kataloge, kuriame yra paleidžiamasis.

Tačiau, mūsų skaitomas failas yra vienu lygiu aukščiau, tai yra, tame kataloge, kuriame yra katalogas su scenarijumi.

Tokiu atveju mes turime aiškiai nurodyty kelį iki failo, kad šis failas būtų ieškomas vienu lygiu aukščiau. Tam prieš failo pavadinimą reikia parašyti ../. Padarykime tai:

php<?php
  echo file_get_contents('../test.txt'); // failas bus perskaitytas
?>

Pavyzdys

Tarkime, kad turime tokią failų struktūrą:

Šiuo atveju skaitant failą mes pirmiausia išeisime vienu lygiu aukščiau, o tada nurodysime kelią iki mūsų failo, santykinai to lygio:

script/index.php<?php
  echo file_get_contents('../directory/test.txt');
?>

Pavyzdys

Tarkime, kad turime tokią failų struktūrą:

Šiuo atveju mums reikės išeiti aukštyn du kartus:

script/test/index.php<?php
  echo file_get_contents('../../directory/test.txt');
?>

Praktinės užduotys

Задание 1

Parašykite kodą, kuris perskaitys teksto failo turinį:

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

Parašykite kodą, kuris perskaitys teksto failo turinį:

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

Parašykite kodą, kuris perskaitys teksto failo turinį:

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

Parašykite kodą, kuris perskaitys teksto failo turinį:

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