PHP dosya oluşturma işlemi için touch fonksiyonu, dosya silmek için unlink fonksiyonu, klasör oluşturma işlemi için mkdir fonksiyonu, klasör silmek için de rmdir fonksiyonu kullanılır. Bu yazıda bu fonksiyonların kullanımını ayrıntılı bir şekilde uygulamalı olarak göreceğiz.
Aşağıdaki listeden PHP dosya ve dizin fonksiyonları ile alakalı diğer yazılarıma ulaşabilirsiniz.
mkdir() fonksiyonu
PHP dizin oluşturma, klasör oluşturma işlemini gerçekleştirmek için mkdir fonksiyonu kullanılır. 2 parametre ile kullanılabilir. İlk parametre oluşturulacak dizinin ismi ve adresinin yolunun belirtildiği metin, ikinci parametre okuma, yazma, çalıştırma gibi dosyanın CHMOD ayarının yapıldığı değer. İkinci parametreyi kullanmak zorunlu değildir. Fonksiyon başarılı bir şekilde çalıştığında true yani 1 değeri döner, aksi takdirde false değeri döner.
mkdir('dosyalar/resimler');
Yukarıdaki örnekte
dosyalar klasörü içerisine resimler klasörü oluşturma işlemi
uygulanıyor. Dosyalar klasörü yok ise veya aynı klasörden zaten
var ise fonksiyon hata verecektir.
Aşağıdaki örnekte ise file_exists fonksiyonu ile php dosya varmı kontrolü kontrolü yapılıyor. Dosya yok ise mkdir fonksiyonu ile dizin oluşturma işlemi tüm izinlerin verildiği 0777 değeri olan CHMOD ayarı yapılarak gerçekleştiriliyor. Mkdir fonksiyonu başarılı bir şekilde çalışıp çalışmadığına göre if koşulu ile ekrana yazı yazdırılıyor.
Mkdir fonksiyonu kullanımı aşağıdaki gibidir.
if (file_exists('dosyalar/resimler')){
echo 'Klasör zaten var';
}else{
$sonuc = mkdir('dosyalar/resimler','0777');
if ($sonuc){
echo 'Klasör başarıyla oluşturuldu';
}else{
echo 'Bir hata oluştu';
}
}
Rmdir() fonksiyonu
PHP klasör silme işlemi rmdir fonksiyonu ile gerçekleştirilebilir. Fonksiyonun içerisine parametre olarak silinecek olan klasörün yolu verilir. Rmdir ile dizin silme işlemi başarılı bir şekilde gerçekleşir ise fonksiyon true değerini döndürür, değil ise false değeri döner. PHP klasör silme işlemini mkdir ile yapabilmek için klasörün tamamen boş olması gerekiyor. Dizin içerisindeki dosyaları silme işlemi yapılıp, sonrasında klasörün silinmesi gerekir. Rmdir fonksiyonu kullanımı aşağıdaki gibidir.
rmdir('dosyalar/resimler');
Aşağıdaki kodlar ile klasör boş değil ise klasör içerisindeki dosyaları silip daha sonrasında klasörün silinme işlemi gerçekleştiriliyor.
if (file_exists('dosyalar/resimler')){ //dosyalar dizininin içerisinde resimler klasörü mevcut ise
array_map('unlink', glob('dosyalar/resimler/*')); //bütün dosyalar siliniyor
$sonuc = rmdir('dosyalar/resimler'); //klasör siliniyor
if ($sonuc){
echo 'Klasör başarıyla silindi';
}
}else{
echo 'Klasör mevcut değil';
}
Touch() fonksiyonu
PHP dosya oluşturma işlemini gerçekleştiren fonksiyonlardan biridir. Dosya yok ise yeniden dosya oluşturma işlemini uygular. Eğer dosya belirtilen adreste aynı isimde bulunuyor ise dosyanın değişim tarihini günceller. 2 parametre ile kullanılır. İkinci parametrenin kullanılması zorunlu değildir. İlk parametre oluşturulacak dizinin adresi ile birlikte dosyanın ismi, ikinci parametre ise dosya değişim, güncellenme tarihinin belirtildiği değer. Varsayılan olarak anlık zamanı kullanır.
Fonksiyon başarılı bir şekilde gerçekleşip dosya oluşturma yada dosyanın değiştirme tarihi güncelleme işlemi gerçekleşir ise true değeri döner, düzgün çalışmaz ise false değeri döner. Touch fonksiyonu kullanımı aşağıdaki gibidir.
$zaman = time() - 3600;
$sonuc = touch('dosyalar/metin.txt',$zaman);
if ($sonuc){
echo 'Başarılı';
}else{
echo 'Başarısız';
}
unlink() fonksiyonu
PHP dosya silme işlemi unlink fonksiyonu ile yapılır. Parametre olarak girilen adreste bulunan dosyayı siler. Verilecek olan dosya adresi url değil, dosya yolu olması gerekiyor. Fonksiyonun çalıştığı dizinin konumunu düşünerek, fonksiyonun dosyaya erişmesi için düzgün dosya yolunun belirtilmesi gerekir. Tam olarak dosya yolu verilmez ise unlink fonksiyonu çalışmaz.
Unlink fonksiyonu başarılı bir şekilde çalışıp belirtilen adresteki dosyayı siler ise fonksiyon true değeri döndürür, aksi halde false değeri döner. Unlink fonksiyonu kullanımı aşağıdaki gibidir.
$sonuc = unlink('dosyalar/metin.txt');
if ($sonuc){
echo 'Dosya başarıyla silindi';
}else{
echo 'Dosya silinemedi';
}
Yukarıdaki örnekte
unlink fonksiyonunun çalıştığı dosyanın konumu dosyalar
klasörüyle aynıdır.
Not: Mesela unlink fonksiyonunun çalıştığı fonksiyon bir klasörün içerisinde olsaydı ‘../dosyalar/metin.txt’ şeklinde yazılarak “bir önceki dizinde bulunan dosyalar klasörünün içerisindeki metin.txt dosyası silinsin” komutunu vermiş oluruz.
Dosya yoluna girilen “../” değeri, bulunulan klasörden bir önceki klasörü temsil eder. Aynı mantıkla “../../” değeri ile iki klasör önceki klasörü temsil eder.