Σχετικές διαδρομές στην PHP
Όπως ήδη γνωρίζετε, στην παράμετρο της συνάρτησης file_get_contents
πρέπει να γράφετε το όνομα του αρχείου. Αυτό, ωστόσο, λειτουργεί
μόνο στην περίπτωση που το αρχείο που διαβάζεται βρίσκεται
στον ίδιο φάκελο από τον οποίο εκτελείται το script μας.
Εάν το αρχείο βρίσκεται αλλού, τότε στην παράμετρο της συνάρτησης πρέπει να γράψετε τη διαδρομή προς αυτό το αρχείο.
Ας δούμε ένα παράδειγμα.
Παράδειγμα
Ας υποθέσουμε ότι έχουμε την ακόλουθη δομή αρχείων:
- index.php
- /directory/
- test.txt
Ας διαβάσουμε τα περιεχόμενα του αρχείου κειμένου. Για αυτό, εκτός από το όνομα του αρχείου, θα χρειαστεί να καθορίσουμε και το φάκελο στον οποίο βρίσκεται:
<?php
echo file_get_contents('directory/test.txt');
?>
Παράδειγμα
Ας υποθέσουμε ότι έχουμε την ακόλουθη δομή αρχείων:
- /script/
- index.php
- test.txt
Σε αυτήν την περίπτωση, η προσπάθεια ανάγνωσης του αρχείου μας, καθορίζοντας ως διαδρομή μόνο το όνομά του, θα καταλήξει σε σφάλμα:
<?php
echo file_get_contents('test.txt'); // θα προκαλέσει σφάλμα
?>
Γιατί εμφανίζεται σφάλμα; Το γεγονός είναι ότι στην παράμετρο της συνάρτησης γράψαμε το όνομα του αρχείου. Αυτό σημαίνει ότι το αρχείο που διαβάζεται πρέπει να βρίσκεται στον ίδιο φάκελο με αυτόν που εκτελείται.
Ωστόσο, το αρχείο που διαβάζουμε βρίσκεται ένα επίπεδο πάνω, δηλαδή στον φάκελο που περιέχει τον φάκελο με το script.
Σε αυτήν την περίπτωση, πρέπει να καθορίσουμε ρητά στη διαδρομή
προς το αρχείο, ότι αυτό το αρχείο πρέπει να αναζητηθεί ένα επίπεδο
πάνω. Για αυτό, πριν από το όνομα του αρχείου, πρέπει
να γράψουμε ../. Ας το κάνουμε:
<?php
echo file_get_contents('../test.txt'); // το αρχείο θα διαβαστεί
?>
Παράδειγμα
Ας υποθέσουμε ότι έχουμε την ακόλουθη δομή αρχείων:
- /script/
- index.php
- /directory/
- test.txt
Σε αυτήν την περίπτωση, κατά την ανάγνωση του αρχείου, πρώτα θα βγούμε ένα επίπεδο πάνω, και στη συνέχεια θα καθορίσουμε τη διαδρομή προς το αρχείο μας σε σχέση με αυτό το επίπεδο:
<?php
echo file_get_contents('../directory/test.txt');
?>
Παράδειγμα
Ας υποθέσουμε ότι έχουμε την ακόλουθη δομή αρχείων:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
Σε αυτήν την περίπτωση, θα χρειαστεί να βγούμε πάνω δύο φορές:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Πρακτικές Ασκήσεις
Γράψτε κώδικα που θα διαβάσει τα περιεχόμενα ενός αρχείου κειμένου:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Γράψτε κώδικα που θα διαβάσει τα περιεχόμενα ενός αρχείου κειμένου:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Γράψτε κώδικα που θα διαβάσει τα περιεχόμενα ενός αρχείου κειμένου:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Γράψτε κώδικα που θα διαβάσει τα περιεχόμενα ενός αρχείου κειμένου:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/