Ben rmdir ile bir dizini kaldırmak için çalışıyorum, ama yine de o dosya var çünkü, 'Dizin boş değil' iletisi aldı.
Ben de bunun tüm dosyaları ile bir dizin kaldırmak için ne fonksiyon kullanabilirim?
Bunu yapmak, ancak http://us3.php.net/rmdir altındaki yorumları görmek için yerleşik hiçbir işlevi yoktur. Commenters bir dizi kendi ardışık dizin silinmesi fonksiyonları yayınlanmıştır. O arasından tercihinizi alabilir.
İşte one that looks decent:
function deleteDirectory($dir) {
if (!file_exists($dir)) return true;
if (!is_dir($dir)) return unlink($dir);
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
if (!deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false;
}
return rmdir($dir);
}
Şeyleri basit tutmak istiyorsanız Edit: Sen sadece rm -rf
çağırmak olabilir. Bu sizin komut UNIX-okunur yapmak, böylece sakının gelmez. Eğer bu yolu gitmek gibi bir şey denemek istiyorum:
function deleteDirectory($dir) {
system('rm -rf ' . escapeshellarg($dir), $retval);
return $retval == 0; // UNIX commands return zero on success
}
Her zaman sistem komutları kullanmayı deneyebilirsiniz.
If on linux use: rm -rf /dir
If on windows use: rd c:\dir /S /Q
In the post above (John Kugelman) I suppose the php parser will optimize that scandir in the foreach but it just seems wrong to me to have the scandir in the foreach condition statement.
You could also just do two array_shift commands to remove the '.' and '..' instead of always checking in the loop.