PHP'de Göreli Yollar
Bildiğiniz gibi, file_get_contents fonksiyonunun parametresine
dosya adı yazılır. Ancak bu, sadece okunan dosyanın
betiğimizin çalıştırıldığı klasörde bulunması durumunda
çalışır.
Eğer dosya başka bir yerde ise, fonksiyonun parametresine o dosyanın yolunu yazmamız gerekir.
Bir örnek üzerinden inceleyelim.
Örnek
Aşağıdaki dosya yapısına sahip olduğumuzu varsayalım:
- index.php
- /directory/
- test.txt
Metin dosyasının içeriğini okuyalım. Bunun için dosya adına ek olarak, içinde bulunduğu klasörü de belirtmemiz gerekir:
<?php
echo file_get_contents('directory/test.txt');
?>
Örnek
Aşağıdaki dosya yapısına sahip olduğumuzu varsayalım:
- /script/
- index.php
- test.txt
Bu durumda, dosyayı yol olarak sadece adını belirterek okumaya çalışmak hata ile sonuçlanacaktır:
<?php
echo file_get_contents('test.txt'); // hata verecek
?>
Neden hata alıyoruz? Sorun şu ki, fonksiyon parametresine sadece dosya adını yazdık. Bu da, okunacak dosyanın çalıştırılan betikle aynı klasörde bulunması gerektiği anlamına gelir.
Ancak, okumak istediğimiz dosya bir seviye yukarıda, yani betiği içeren klasörün bir üst klasöründe bulunuyor.
Bu durumda, dosya yolunda bu dosyanın bir seviye yukarıda
aranması gerektiğini açıkça belirtmeliyiz. Bunun için
dosya adından önce ../ yazmamız gerekir. Bunu yapalım:
<?php
echo file_get_contents('../test.txt'); // dosya okunacak
?>
Örnek
Aşağıdaki dosya yapısına sahip olduğumuzu varsayalım:
- /script/
- index.php
- /directory/
- test.txt
Bu durumda dosyayı okurken önce bir seviye yukarı çıkar, sonra dosyamızın yolunu bu seviyeye göre belirtiriz:
<?php
echo file_get_contents('../directory/test.txt');
?>
Örnek
Aşağıdaki dosya yapısına sahip olduğumuzu varsayalım:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
Bu durumda iki kere üst klasöre çıkmamız gerekecek:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Pratik Görevler
Metin dosyasının içeriğini okuyan kodu yazın:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Metin dosyasının içeriğini okuyan kodu yazın:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Metin dosyasının içeriğini okuyan kodu yazın:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Metin dosyasının içeriğini okuyan kodu yazın:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/