<?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.";
}
?>
它运作良好,良好。但是,如果我需要删除包含一些文件和空文件夹的文件夹。在这种情况下,它删除所有文件,但不删除空文件夹。它会抛出一个例外......
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
删除该文件夹的可能方法是空的。
答案 0 :(得分:4)
只需在while循环中递归使用rmdirr函数,而不是取消链接;
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);
}
这样它也会处理非空的子文件夹...
答案 1 :(得分:1)
您必须确保您的网络服务器能够删除这些文件。检查权限。
答案 2 :(得分:0)
您只删除1级文件。您的代码尝试使用TEST//New Folder
而不是unlink
删除文件夹rmdir
。您必须检查它是否是文件夹,然后rmdir
或unlink
。