Relatīvie ceļi PHP

Kā jūs jau zināt, funkcijas file_get_contents parametrā jāraksta faila nosaukums. Tas tomēr strādā tikai tad, ja lasāmais fails atrodas tajā pašā mapē, kurā tiek palaists mūsu skripts.

Ja fails atrodas citur, tad funkcijas parametrā jāieraksta ceļš uz šo failu.

Apskatīsim ar piemēru.

Piemērs

Pieņemsim, ka mums ir šāda failu struktūra:

Izlasīsim teksta faila saturu. Lai to izdarītu, papildus faila nosaukumam mums būs jānorāda arī mape, kurā tas atrodas:

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

Piemērs

Pieņemsim, ka mums ir šāda failu struktūra:

Šādā gadījumā mēģinājums nolasīt mūsu failu, norādot ceļā tā nosaukumu, beigsies ar kļūdu:

script/index.php<?php
  echo file_get_contents('test.txt'); // izvadīs kļūdu
?>

Kāpēc tiek izvadīta kļūda? Lieta ir tāda, ka mēs funkcijas parametrā ierakstījām faila nosaukumu. Tas nozīmē, ka lasāmajam failam jāatrodas tajā pašā mapē, kurā tiek palaists skripts.

Tomēr, mūsu lasāmais fails atrodas vienu līmeni augstāk, tas ir, tajā mapē, kurā atrodas skripta mape.

Šādā gadījumā mums ceļā uz failu ir skaidri jānorāda, ka šis fails jāmeklē vienu līmeni augstāk. Lai to izdarītu, pirms faila nosaukuma ir jāraksta ../. Darīsim tā:

php<?php
  echo file_get_contents('../test.txt'); // fails tiks nolasīts
?>

Piemērs

Pieņemsim, ka mums ir šāda failu struktūra:

Šajā gadījumā, lasot failu, mēs vispirms izeisim vienu līmeni augstāk, un pēc tam norādīsim ceļu uz mūsu failu attiecībā pret šo līmeni:

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

Piemērs

Pieņemsim, ka mums ir šāda failu struktūra:

Šajā gadījumā mums būs jāizej augšup divas reizes:

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

Praktiskie uzdevumi

Задание 1

Uzrakstiet kodu, kas nolasīs teksta faila saturu:

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

Uzrakstiet kodu, kas nolasīs teksta faila saturu:

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

Uzrakstiet kodu, kas nolasīs teksta faila saturu:

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

Uzrakstiet kodu, kas nolasīs teksta faila saturu:

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