Relative Pfade in PHP
Wie Sie bereits wissen, sollte der Name der Datei
in den Parameter der Funktion file_get_contents
geschrieben werden. Dies funktioniert jedoch
nur, wenn die zu lesende Datei in demselben Ordner liegt,
in dem unser Skript ausgeführt wird.
Wenn die Datei an einem anderen Ort liegt, muss der Pfad zu dieser Datei in den Parameter der Funktion geschrieben werden.
Sehen wir uns ein Beispiel an.
Beispiel
Nehmen wir an, wir haben die folgende Dateistruktur:
- index.php
- /directory/
- test.txt
Lassen Sie uns den Inhalt der Textdatei lesen. Dazu müssen wir zusätzlich zum Dateinamen auch den Ordner angeben, in dem sie sich befindet:
<?php
echo file_get_contents('directory/test.txt');
?>
Beispiel
Nehmen wir an, wir haben die folgende Dateistruktur:
- /script/
- index.php
- test.txt
In diesem Fall wird der Versuch, unsere Datei zu lesen, indem wir ihren Namen als Pfad angeben, mit einem Fehler enden:
<?php
echo file_get_contents('test.txt'); // wird einen Fehler ausgeben
?>
Warum wird ein Fehler ausgegeben? Der Grund ist, dass wir den Dateinamen in den Funktionsparameter geschrieben haben. Das bedeutet, dass die zu lesende Datei sich in demselben Ordner befinden muss wie die ausgeführte.
Unsere zu lesende Datei befindet sich jedoch eine Ebene höher, also in dem Ordner, der den Ordner mit dem Skript enthält.
In diesem Fall müssen wir explizit im Pfad
zur Datei angeben, dass diese Datei eine Ebene
höher gesucht werden soll. Dazu sollte vor dem Dateinamen
../ geschrieben werden. Tun wir das:
<?php
echo file_get_contents('../test.txt'); // Datei wird gelesen
?>
Beispiel
Nehmen wir an, wir haben die folgende Dateistruktur:
- /script/
- index.php
- /directory/
- test.txt
In diesem Fall gehen wir beim Lesen der Datei zunächst eine Ebene nach oben und geben dann den Pfad zu unserer Datei relativ zu dieser Ebene an:
<?php
echo file_get_contents('../directory/test.txt');
?>
Beispiel
Nehmen wir an, wir haben die folgende Dateistruktur:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
In diesem Fall müssen wir zweimal nach oben gehen:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Praktische Aufgaben
Schreiben Sie Code, der den Inhalt der Textdatei liest:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Schreiben Sie Code, der den Inhalt der Textdatei liest:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Schreiben Sie Code, der den Inhalt der Textdatei liest:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Schreiben Sie Code, der den Inhalt der Textdatei liest:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/