PHP kullanarak boş bir klasörü silmek için nasıl

3 Cevap
<?php 
function rmdirr($dirname){
	// Sanity check
	$dirname = "TEST/";
	if (!file_exists($dirname)) {
		return false;
	}

	// Simple delete for a file
	if (is_file($dirname)) {
		return unlink($dirname);
	}

	// Loop through the folder
	$dir = dir($dirname);
	while (false !== $entry = $dir->read()) {
		// Skip pointers
		if ($entry == "." || $entry == "..") {
			continue;
		}

		// Recurse
		unlink("$dirname/$entry");
	}

	// Clean up
	$dir->close();
	return rmdir($dirname);
}
if (rmdirr($_GET['map'])){
	echo "TEST FERo";
}
else{
	echo "something went wrong.";
}
?>

Onun iyi ve iyi çalışıyor. Ama bazı dosyaları ve boş klasörünü içeren klasörü silmek için gerekirse. Bu durumda tüm dosyaları değil, boş klasörü silmek. Sanki bir istisna atar ...

Warning: unlink(TEST//New Folder) [function.unlink]: Permission denied 
  in E:\Xampp\xampp\htdocs\delete_FILE\delete_FILE.php on line 23

Warning: rmdir(TEST/) [function.rmdir]: Directory not empty in
  E:\Xampp\xampp\htdocs\delete_FILE\delete_FILE.php on line 28

Hatta boş klasörü silmek mümkün yolu nedir.

3 Cevap

Sadece yerine unlink bir süre döngü özyinelemeli sizin rmdirr işlevini kullanın;

function rmdirr($dirname){ 
  // Sanity check 
  if (!file_exists($dirname)) { return false; }

  // Simple delete for a file 
  if (is_file($dirname)) { return unlink($dirname); }

  // Loop through the folder 
  $dir = dir($dirname); 
  while (false !== $entry = $dir->read()) { 
    // Skip pointers 
    if ($entry == "." || $entry == "..") { continue; }

    // Recurse
    rmdirr("$dirname/$entry"); 

  }

  // Clean up 
  $dir->close(); 
  return rmdir($dirname); 
}

Bu şekilde o da boş olmayan alt klasörlerin ilgilenirim ...

Eğer web sunucusu bu dosyaları silmek mümkün olduğundan emin olmak gerekir. izinlerini kontrol edin.

Siz sadece 1 düzeyinde dosyaları silerek vardır. Sizin kod TEST//New Folder unlink yerine rmdir kullanarak klasörü silmeye çalışır. Bunu bir klasör ya da değilse kontrol etmek, sonra da rmdir veya unlink bunu.