Căi relative în PHP
După cum știți deja, în parametrul funcției file_get_contents
ar trebui să scrieți numele fișierului. Acest lucru, totuși, funcționează
doar în cazul în care fișierul citit se află
în același director în care este rulat scriptul nostru.
Dacă fișierul se află în altă parte, atunci în parametrul funcției trebuie să scriem calea către acel fișier.
Să vedem un exemplu.
Exemplu
Să presupunem că avem următoarea structură de fișiere:
- index.php
- /directory/
- test.txt
Să citim conținutul fișierului text. Pentru aceasta, pe lângă numele fișierului, va fi nevoie să specificăm și directorul în care se află:
<?php
echo file_get_contents('directory/test.txt');
?>
Exemplu
Să presupunem că avem următoarea structură de fișiere:
- /script/
- index.php
- test.txt
În acest caz, încercarea de a citi fișierul nostru, specificând ca cale doar numele său, se va termina cu o eroare:
<?php
echo file_get_contents('test.txt'); // va da eroare
?>
De ce apare eroarea? Problema este că în parametrul funcției am scris doar numele fișierului. Acest lucru înseamnă că fișierul citit ar trebui să fie localizat în același director ca și cel executat.
Totuși, fișierul nostru citit se află cu un nivel mai sus, adică în acel director care conține directorul cu scriptul.
În acest caz, trebuie să indicăm explicit în calea
către fișier, că acest fișier trebuie căutat cu un nivel
mai sus. Pentru aceasta, înaintea numelui fișierului trebuie
să scriem ../. Să facem acest lucru:
<?php
echo file_get_contents('../test.txt'); // fișierul va fi citit
?>
Exemplu
Să presupunem că avem următoarea structură de fișiere:
- /script/
- index.php
- /directory/
- test.txt
În acest caz, la citirea fișierului, vom ieși întâi cu un nivel mai sus, apoi vom specifica calea către fișierul nostru relativ la acest nivel:
<?php
echo file_get_contents('../directory/test.txt');
?>
Exemplu
Să presupunem că avem următoarea structură de fișiere:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
În acest caz, va trebui să ieșim mai sus de două ori:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Probleme practice
Scrieți codul care va citi conținutul fișierului text:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Scrieți codul care va citi conținutul fișierului text:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Scrieți codul care va citi conținutul fișierului text:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Scrieți codul care va citi conținutul fișierului text:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/