PHP ile içi dolu klasör silme fonksiyonu

PHP ile sunucu üzerinde bir klasör silmek isterseniz rmdir() fonksiyonunu kullanabilirsiniz ama klasörün içinde dosyalar varsa bu fonksiyon işinizi görmeyecektir. Öncesinde klasörün içindeki dosyaları silip sonra rmdir() fonksiyonu ile klasörü silebilirsiniz.

Bu işlemi kolaylaştıran bir fonksiyon paylaşmak istiyorum.

Kullanımı çok basit. Silmek istediğiniz klasörün yolunu yazmanız yeterli…

Örn : klasorsil(“images/eski_urunler”);

function klasorsil($klasor){
if (substr($klasor, -1) != '/')
$klasor .= '/';
if ($handle = opendir($klasor)) {
while ($obj = readdir($handle)) {
if ($obj!= '.' && $obj!= '..') {
if (is_dir($klasor.$obj)) {
if (!klasorsil($klasor.$obj))
return false;
}elseif (is_file($klasor.$obj)) {
if (!unlink($klasor.$obj))
return false;
}
}
}
closedir($handle);
if (!@rmdir($klasor))
return false;
return true;
}
return false;
}

Güncelleme : salla2016 isimli kullanıcının geri bildirimi üzerine ilk satırdaki strlen() fonksiyonu hata verdiği için kaldırdım. Üstteki kodlar çalışmaktadır.

About Author

You May Also Like

3 comments

bu çalışmıyor. Parse error: syntax error, unexpected ‘−1’ (T_STRING)

Merhaba,
Yorumunuz için teşekkür ederim. strlen() fonksiyonu hata veriyordu. Aslında kullanılması da gereksiz olmuş. O satırı değiştirdim.
Dilerseniz fonksiyonun içindeki 1. satırı silip kullanabilirsiniz ama bu şekilde fonksiyona göndereceğiniz klasör adının sonunda / olmadan kullanmalısınız.
2. satırı da silerseniz bu sefer silinmesi istediğiniz klasör adının sonunda mutlaka / kullanmalısınız.

İlk satırdaki if fonksiyonu silinecek klasör isminin sonunda / var mı yok mu kontrol ediyor. Zaten varsa herhangi bir değişiklik yapmıyor. Ama yoksa dosya adının sonunda / ekleyerek devam ediyor.

Şuan düzenlenmiş haliyle / olsun olmasın çalışmaktadır. Direk bu haliyle kullanmanızı tavsiye ederim.

Aşkın says:

Eline sağlık üstad gayet düzgün bir şekilde çalıştı. İyi çalışmalar

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.