windows平台下rmdir或unlinnk时Permission denied 错误

/ 0评 / 9

写了个删除目录或文件的函数。如下。

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);后正常删除!

发表评论

您的电子邮箱地址不会被公开。

*