我这里有一段PHP代码,删除目录及其中的所有文件(如果存在).但是,我不太确定它,它在我看来它会删除所有的子地图,然后在那些文件等等...
我基本上想要给出和可选的true/false参数来选择是否删除子目录.或者更好的做法是制作2个功能?第一个完全清空文件夹和秒删除文件夹及其中的所有内容.
这是代码:
function delete_directory($dirname) { if (is_dir($dirname)) { $dir_handle = opendir($dirname); if (!$dir_handle) return false; while($file = readdir($dir_handle)) { if ($file != "." && $file != "..") { if (!is_dir($dirname."/".$file)){ @unlink($dirname."/".$file); }else { delete_directory($dirname.'/'.$file); } } } closedir($dir_handle); } @rmdir($dirname) or die("Could not remove directory."); return true; }
而我基本上想知道的是:这里可能出现什么问题?是否存在这段代码严重搞砸的情况?我已经用Netbeans对它进行了几个小时的调试,并尝试了很多不同的场景.现在我有点困惑,想知道StackoverFlow的人是否可以在代码中找到一个缺陷?
而我基本上想知道的是:这里可能出现什么问题?是否存在这段代码严重搞砸的情况?
如果dir包含一个符号链接到其他地方,它会被跟踪(除非我弄错了 - 你应该检查一下).这可能导致野火,你基本上消灭了整个文件系统.您可能希望使用以防止这种情况realpath