【发布时间】:2014-06-10 14:49:23
【问题描述】:
如果使用此功能删除一个目录+里面的所有文件。
function delete_files($target)
{
if(is_dir($target))
{
$files = glob($target . '*', GLOB_MARK);
foreach($files as $file)
{
delete_files($file);
}
rmdir($target);
}
elseif(is_file($target))
{
unlink($target);
}
}
delete_files($directory);
但是每当我这样做时,我都会收到以下错误消息:
警告:rmdir(directory/12) [function.rmdir]: 没有这样的文件或目录 在 delete_files.php 中
"directory/12" 是我要删除的目录的正确名称。我不明白为什么它说它不存在,因为它确实存在!奇怪的是,即使我收到错误消息,目录 DID 也被删除了。
所以我在 for 循环之前添加了一行代码 print_n($files);,它让我使用了两个数组——一个包含目录(“directory/12”),另一个包含目录的所有文件(“directory /12/01.gif”、“目录/12/02.gif”等)。所以我认为该目录必须在 for 循环中被删除并删除了 rmdir($target) 行并再次尝试。这一次,目录中的所有文件都被删除了,但目录本身仍然存在。
显然,rmdir 确实正确删除了目录。但是,为什么它会事先给我它不存在的错误消息?
【问题讨论】:
-
使用目录名(__ FILE __);你在函数中也缺少一个 }
-
你确定php进程有删除文件的权限吗?这是在 linux 服务器上运行的吗?