Względne ścieżki w PHP
Jak już wiesz, do parametru funkcji file_get_contents
należy wpisać nazwę pliku. Działa to jednak
tylko wtedy, gdy odczytywany plik znajduje się
w tym samym folderze, w którym uruchamiany jest nasz skrypt.
Jeśli plik znajduje się w innym miejscu, to do parametru funkcji należy wpisać ścieżkę do tego pliku.
Spójrzmy na przykład.
Przykład
Załóżmy, że mamy następującą strukturę plików:
- index.php
- /directory/
- test.txt
Przeczytajmy zawartość pliku tekstowego. W tym celu oprócz nazwy pliku będziemy potrzebować podać również folder, w którym się znajduje:
<?php
echo file_get_contents('directory/test.txt');
?>
Przykład
Załóżmy, że mamy następującą strukturę plików:
- /script/
- index.php
- test.txt
W takim przypadku próba odczytania naszego pliku, podając jako ścieżkę jego nazwę, zakończy się błędem:
<?php
echo file_get_contents('test.txt'); // zwróci błąd
?>
Dlaczego zwracany jest błąd? Chodzi o to, że do parametru funkcji wpisaliśmy nazwę pliku. Oznacza to, że odczytywany plik powinien znajdować się w tym samym folderze, co uruchamiany skrypt.
Jednak nasz odczytywany plik znajduje się o poziom wyżej, czyli w folderze, który zawiera folder ze skryptem.
W takim przypadku musimy wyraźnie wskazać w ścieżce
do pliku, że ten plik należy szukać o poziom
wyżej. W tym celu przed nazwą pliku należy
napisać ../. Zróbmy to:
<?php
echo file_get_contents('../test.txt'); // plik zostanie odczytany
?>
Przykład
Załóżmy, że mamy następującą strukturę plików:
- /script/
- index.php
- /directory/
- test.txt
W tym przypadku przy odczycie pliku najpierw wyjdziemy o poziom wyżej, a następnie wskażemy ścieżkę do naszego pliku względem tego poziomu:
<?php
echo file_get_contents('../directory/test.txt');
?>
Przykład
Załóżmy, że mamy następującą strukturę plików:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
W tym przypadku będziemy potrzebować wyjść do góry dwa razy:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Zadania praktyczne
Napisz kod, który odczyta zawartość pliku tekstowego:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Napisz kod, który odczyta zawartość pliku tekstowego:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Napisz kod, który odczyta zawartość pliku tekstowego:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Napisz kod, który odczyta zawartość pliku tekstowego:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/