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:

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:

index.php<?php
  echo file_get_contents('directory/test.txt');
?>

Örnek

Aşağıdaki dosya yapısına sahip olduğumuzu varsayalım:

Bu durumda, dosyayı yol olarak sadece adını belirterek okumaya çalışmak hata ile sonuçlanacaktır:

script/index.php<?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<?php
  echo file_get_contents('../test.txt'); // dosya okunacak
?>

Örnek

Aşağıdaki dosya yapısına sahip olduğumuzu varsayalım:

Bu durumda dosyayı okurken önce bir seviye yukarı çıkar, sonra dosyamızın yolunu bu seviyeye göre belirtiriz:

script/index.php<?php
  echo file_get_contents('../directory/test.txt');
?>

Örnek

Aşağıdaki dosya yapısına sahip olduğumuzu varsayalım:

Bu durumda iki kere üst klasöre çıkmamız gerekecek:

script/test/index.php<?php
  echo file_get_contents('../../directory/test.txt');
?>

Pratik Görevler

Задание 1

Metin dosyasının içeriğini okuyan kodu yazın:

  • index.php
  • /dir1//dir2/test.txt
Задание 2

Metin dosyasının içeriğini okuyan kodu yazın:

  • /script/index.php
  • /dir1//dir2/test.txt
Задание 3

Metin dosyasının içeriğini okuyan kodu yazın:

  • /script1//script2/index.php
  • /dir/test.txt
Задание 4

Metin dosyasının içeriğini okuyan kodu yazın:

  • /script1//script2//script3/index.php
  • /dir1//dir2//dir3/test.txt