写了个删除目录或文件的函数。如下。
function rm($dir){
$dir = str_replace('\\','/',$dir);
if(is_dir($dir)){
$hd = opendir($dir);
while(($f=readdir($hd))!==false){
if($f=='.'||$f=='..')continue;
//echo $dir.'/'.$f;
is_dir($dir.'/'.$f)?rm($dir.'/'.$f):unlink($dir.'/'.$f);
}
if (readdir($hd) == false) {
closedir($hd); //同理,这一段是后来加上去的,否则则报错。
rmdir($dir);
echo $dir.'执行成功<br/>';
}
}
}
首先是unlink删除文件错误,在windows下怎么设置文件或目录的权限呢。linux下可以给予777全部的可写可执行权限。windows下已是administrator用户,查看了一些资料windows下文件或文件夹是“只读”,“存档”,“隐藏”,而我需要删除文件夹里面的文件是只读权限,右键属性就可以看到。于是就把“只读”去掉,当然也应用到子目录下。
再次运行unlink则不报错了。
但rmdir还是有这个错误。
搜索得到。原来是逻辑错误。unlink 出现 Permission denied 错误,系统是windows xp
作者的是fopen打开文件后,并没有fclose而直接删除该文件,于是也报错Permission denied。
一看我的rmdir不是也是如此么。。在opendir后,同样没有closedir就直接删除目录。所以加上closedir($hd);后正常删除!