RSS

PHP dosya sistemi işlevleri

12 16 Haziran 2010 ~ Orhan Gazi Basli — Orta

PHP’de dosya sistemi işlevleri sayesinde yeni dosyalar oluşturabilecek, olan dosyaları değiştirebilecek ya da silebileceğiz. Dosya yükleme ve indirme olaylarında da lazım olacak olan bir çok önemli fonksiyona da bu başlık altında değineceğiz.

Bu işlevler sayesinde tek bir PHP dosyası ile milyonlarca dosya oluşturup, silerek çok büyük bir iş yapmış hissi yaratıp ego tatmin edebilir ya da güzel bir dosya yönetimi, arşiv yönetimi, dosya menejeri gibi işe yarar uygulamalar yapabilirsin.

Şimdi bir dosyayı oluşturmak ile başlayıp, açıp, okuyup, yazıp, kapatıp, silmeyi öğreneceğiz.

Dosyalara yazma ve silme izinleri

Dosya oluşturma ya da silme gibi işlemlere girmeden önce tüm bunları yapabilmek için ihtiyacımız olan yetki ve izinlerden bahsetmek istiyorum.

PHP’de elimizi kolumuzu sallaya sallaya bir dizine ya da bir dosyaya müdahale edemeyiz. Önce bazı yetkilerimizin ya da dosyaların yazma izninin olması gerekir. Eğer lokalde kendi bilgisayarımız üzerinde çalışıyorsak varsayılan olarak izinler verilmiştir. Ama gerçek bir site hostunda güvenlik için kısıtlamalar vardır.

Çalışma yapacağımız dosyaya ya da dizine CHMOD denilen değiştirme modunu ayarlamamız gerekmektedir. CHMOD hakkında fazla detaya girmeden sadece bizim kullanacağımız kadarını anlatmak istiyorum.

Bir dosya ya da dizine, FTP ya da hostun yönetim paneli üzerinden yazma izni verebiliriz. Bu işi FTP’den yapmak için gerekli dosya ya da dizine sağ tıklayıp izin değerlerine “777” yazmamız yeterli.

CHMOD değerini 777 yaptığımız dosya ya da dizine tüm yazma, okuma ve silme izinleri vermiş oluruz. Ve bu noktada güvenlik olayına parmak basıyoruz. Malum tüm bu izinleri verince tedbirli olmak ve paronayak davranmak lazım. Sistemi kodlarken yapacaklarımıza ve yaptıklarımıza dikkat etmemiz gerekiyor.

PHP ile dosya oluşturmak

Olmayan dosyayı oluşturup, değiştirip, çalıştırmamız için touch() adında bir fonksiyon ile tanışacağız. Türkçe anlamı dokunmak olan bu fonksiyon PHP’de dosyalara ilk dokunuşu yapmaya ya da eğer dosya varsa son değişim tarihini değiştirmeye yarıyor.

Kullanımı basit, bir parametre ile çalışıyor. Parametresine oluşturulacak dosya adını giriyoruz.

touch('merhaba.txt');

Yukarıdaki kod çalıştığında kaynak PHP dosyasının olduğu dizinde merhaba.txt adında boş bir dosya oluşturur.

PHP ile dosyaları açmak ve kapatmak

Dosyaların içeriğini okuyup, değiştirip, silmeden önce onları PHP’de açmamız gerekiyor. Bu açma işlemi okumak anlamında anlaşılmasın. Gerekli işlemleri yapmaya başlamadan önce dosyaya ilk erişimi ve bağlantıyı sağlamak anlamında açmaktır.

Bu erişimi fopen() fonksiyonu ile yapacağız. Bu fonksiyon iki parametre ile çalışıyor. İlk parametrede erişeceğimiz dosyayı, ikinci parametrede ise dosyayı ne için eriştiğimizi belirtecek kipi giriyoruz.

Dosyalara ne için erişeceğimizi belirtmemizi belirtecek 8 tane kip var. Bu kipleri tabloda açıklamalarıyla yazalım:

Kip Açıklaması
r Dosyayı okumak için açar. (read)
r+ Dosyayı hem okumak hem de yazmak için açar. (read)
w Dosyayı yazmak için açar. Var olan içeriği siler (write)
w+ Dosyayı hem yazmak hem de okumak için açar. Var olan içeriği siler, baştan yazar. (write)
a Dosyayı yazmak için açar. Var olan içeriği silmez sonuna ekler. (append)
a+ Dosyayı hem yazmak hem de okumak için açar. Var olan içeriği silmez sonuna ekler. (append)
x Dosyayı oluşturur ve yazmak için açar. Eğer dosya zaten varsa FALSE döner.
x+ Dosyayı oluşturur, yazmak ve okumak için açar. Eğer dosya zaten varsa FALSE döner.

Şimdi bu yukarıdaki dosya kipleri ile istediğimiz dosyaya istediğimiz muameleyi görebiliriz.

Dosyalar ile gerekli işlemleri gerçekleştirdikten sonra onları kapatmayı unutmamalıyız. Eğer kapatmazsak bir sonraki dosyaya erişimimizde sorunlarla karşılaşabiliriz. Dosyaları kapatmak için fclose() fonksiyonunu kullanacağız.

Bu fonksiyon bir parametre ile çalışır ve açtığımız dosyayı kapatır. Parametresine fopen ile açtığımız dosyanın değişkeni yazarız.

$dosya = fopen('merhaba.txt', 'r');
fclose($dosya);

Yukarıdaki örnekte merhaba.txt dosyasını okumak için açmış ve ilk erişimi sağlamış olduk ve hemen ardından da kapattık. Sadece erişimi sağlamak ile içeriğe ulaşdığımızı sanmayın. Bağlantıyı sağladıktan sonra diğer okuma ve yazma fonksiyonlarını kullanarak gerekli işlemleri gerçekleştireceğiz.

PHP ile dosyaların içeriğini okumak

Bu işlemi gerçekleştirmek için fopen()‘da r kipini, içeriğe ulaşmak için ise fread() fonksiyonu kullanacağız.

Bu fonksiyonun ilk parametresine önceden fopen ile açtığımız dosyanın değişkenini yazacağız. İkinci parametreye ise dosyadan kaç bayt okuyacağımızı belirteceğiz.

$dosya = fopen('merhaba.txt', 'r');
$icerik = fread($dosya, filesize('merhaba.txt'));
echo $icerik;
fclose($dosya);

Şuan eğer merhaba.txt dosyamızın içerisinde bir şeyler varsa ekranda aynen olduğu gibi yazacaktır. Eğer boş ise ekranda bir şey yazmayacaktır.

Dosyanın tüm içeriğini okumak istediğimiz için ikinci parametreye filesize() fonksiyonu ile dosyanın toplam boyutunu belirterek tüm içeriği almayı sağladık.

PHP ile dosyalara yazma

Dosya yazmak için w kipini ve fwrite() fonksiyonunu kullanacağız. Yanlız w kipini kullanırken eriştiğimiz dosyanın içeriği tamamen silinir ve yazacağımız değer ile değiştirilir.

Eğer daha önce var olan içerik kaybolmadan yazmak istiyorsan o zaman a kipini kullanman gerekecek.

Bu fonksiyonda iki parametre ile çalışıyor. İlk parametreye dosyaya fopen() ile eriştiğimiz değişkeni, ikinci parametreye ise yazılacak içeriği yazarız.

$dosya = fopen('merhaba.txt', 'w');
fwrite($dosya, 'Merhaba Dünya');
fclose($dosya);

Yukarıdaki örneği çalıştırdığımızda merhaba.txt adında dosyamızın içeriğine Merhaba Dünya yazmış olduk.

Bir başka örnek daha verelim:

for($sayi = 1; $sayi < 4; $sayi++) {
   $dosya_adi = 'Dosya' . $sayi . '.txt';
   touch($dosya_adi);
   
   $dosya = fopen($dosya_adi, 'w');
   fwrite($dosya, 'Bu ' . $sayi . '. dosyanın içeriği!');
   fclose($dosya);
}

Bu örnekte tam 3 tane txt dosyası (Dosya1.txt, Dosya2.txt, Dosya3.txt) oluşturup her birinin içerisine “Bu 1. dosyanın içeriği” şeklinde içerik eklemiş olduk.

PHP ile dosyaları silme

Dosya oluşturma fonksiyonunun zıttı olarak göreceğimiz unlink() fonksiyonu ile istediğiniz dosyayı yok edebilirsiniz.

Kullanımı oluşturma fonksiyonu gibi basit ve tek parametreli.

unlink('merhaba.txt');

Diğer örneklerde üzerinde çalıştığımız merhaba.txt dosyasını siler.

PHP’de dosyaların varlığını kontrol etmek

Dosyaların varlığından haberdar olmak, eğer varsa değiştirmek yoksa oluşturmak gibi işlemler yapmak için file_exists fonksiyonunu kullanacağız.

Parametresine gireceğimiz dosya adında bir dosya mevcut ise TRUE değil ise FALSE dönecektir. Hemen örnek ile gösterelim:

if(file_exists('merhaba.txt')) {
   echo 'Dosyamız var';
} else {
   echo 'Dosyamız yok';
}

Bir önceki konuda merhaba.txt dosyasını sildiğimiz için ekranda Dosyamız yok yazacaktır.

Bir sonraki PHP serüvenlerinde görüşmek üzere hoşçakalın.

Etiketler:

Yazılanlar ilgini çektiyse, yenilerinden haberdar olmak için e-mail bültenine abone olabilirsin.

"PHP dosya sistemi işlevleri" yazısı için 12 yorum yapılmış.

  1. […] PHP ile dosya sistemi işlevleri. […]

  2. ali dedi ki:

    peki pdf dosyası oluşturabiliyormuyuz ve bir de resim üzerine yazı yazabiliyor muyuz php de anlatırsanız sevinirim

    • Ramazan San. dedi ki:

      Onu Yapmak İçin Php de Grafik Konusunu Araştırınız.
      Size Tavsiyem “A’dan Z’ye PHP” Kitabını Almanız.
      Orada Tüm Grafik Konularına Değinilmiş.

  3. mustafa dedi ki:

    hocam harika anlatmışsınız…Ellerinize sağlık….

  4. cahilcuhela dedi ki:

    merhaba.txt yerine merhaba.pdf yazarsan olur ama içeriği yukarıdakki gibi yazdıramazsın

  5. Aysun dedi ki:

    Php ile dosya silme işlemi yapmak istiyorum ama çalışmıyor yardım edermisiniz

    Bu form kısmı
    form action=”resimsil.php” method=”post”
    input type=”submit” name=”resimsil” value=”Sil”
    /form

    Buda resimsil.php
    $dosyaadi = “../image/”.$_POST[“resimsil”]; if(@unlink($dosyaadi)) echo “Resim Silindi.”; else echo “Resim Silinemedi”;

  6. bahoo dedi ki:

    Elimde txt dosyası var ve ben bunun içinden kendi belirlediğim değeri bulmak istiyorum.ben mesajlar.txt içindeki “phpr” kelimesini ve “forum” kelimesini ekrana yazdırmak istiyorum yardımcı olursan sevinirim.

  7. Erkan dedi ki:

    Teşekkürler.

  8. vuqar dedi ki:

    selam

    index.php:

    Silinecek Dosyayi Secin:

    s1.php:

    olusturdum.Ilk once index sayfada dosyayi seciyorum ve calistirdigimda dosya siliniyor,ama sonra s1.php sayfasini yeniledigimde hata veriyor(artik silinen dosya olmadigi icin).s1 sayfasinda hata vermemesi ne yapmaliyim yani sayfa ,dosya silindiyse sayfayi yenilediyimde islem yapmasin

    • vuqar dedi ki:

      index:
      form action=”s1.php” method=”post”>
      Silinecek Dosyayi Secin:input name=”dosya” type=”file” />
      input name=”onay” type=”submit” value=”Sil”/>
      /form>

      s1.php:
      $dosya = $_POST[‘dosya’];
      unlink($dosya);
      echo $dosya . “Silindi!”;

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir