我正在尝试删除压缩/下载内容后生成的嵌套文件夹,但我遇到的问题是我最终得到一个无法删除的空文件夹。我在类似的问题中找到了这个答案,以及它的一些版本,但由于某种原因,尽管没有内容,但最后一个文件夹认为它不是空的。
function recursiveRemove($dir) {
$structure = glob(rtrim($dir, "/").'/*');
if (is_array($structure)) {
foreach($structure as $file) {
if (is_dir($file)) recursiveRemove($file);
elseif (is_file($file)) unlink($file);
}
}
rmdir($dir);
}
任何帮助将不胜感激!
答案 0 :(得分:0)
它试图过快地删除太多文件夹 - 让系统打开/关闭文件夹就足以验证内部没有任何内容并按预期删除所有内容。
function recursiveRemove($dir) {
$structure = glob(rtrim($dir, "/").'/*');
if (is_array($structure)) {
foreach($structure as $file) {
if (is_dir($file)) recursiveRemove($file);
elseif (is_file($file)) unlink($file);
}
}
//Opening and closing the directory forces system to recognize it is empty
$openCheck = opendir($dir);
closedir($openCheck);
//Remove directory after done removing all children
rmdir($dir);
}
谢谢Xatenev让我走上正轨!我觉得这可能有点笨拙 - 如果有人有更好的主意,请告诉我!
答案 1 :(得分:0)
试试这个:
/**
* Remove directory recursively.
*
* @param string $path Path
* @return bool True on success or false on failure.
*/
function rrmdir($path) {
$files = glob($path . '/*');
foreach ($files as $file) {
is_dir($file) ? rrmdir($file) : unlink($file);
}
return rmdir($path);
}