我用的是Linux虚拟空间,每当升级论坛或博客程序后,就会有些旧的文件或文件夹异常“顽固”无法删除,不管是FTP工具还是WEB管理工具都没辙,只得通知客服协助删除一下。不过总这样总归不是个好办法,且很不方便。今天升级UCenter Home后,又出现这个问题!遂试着在网上找找有没有同样的问题及解决方法,果然有。
原来这是文件或文件夹的权限问题:这些所不能被FTP帐户删除的文件或文件夹是由PHP程序生成的(如在上传文件时所生成的目录),所以它们的所有者是Apache帐户而非Ftp帐户,由于有些Linux虚拟主机上的Apache帐户和Ftp帐户通常不在一个用户组,当然Apache帐户所创建的文件或文件夹也就无法由Ftp帐户删除或更改了。解决方法就是用Php程序让Apache去删除,Php代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>空间文件夹/文件删除工具</title> <style> body {font-family:"宋体"; font-size:12px;} imput { border:1px #ccc solid;} b { color:#FF0000;} </style> </meta></head> <body> <form action="?action=dirdel" method="post"> 删除文件夹,<b>请确定填写无误后再进行删除操作!</b><br /> 请输入文件夹路径,多个文件夹请使用";"隔开 <input type="text" name="all_folder" size="50"/> <input type="submit" value="删除"/> </form> <br /> <form action="?action=filedel" method="post"> 删除文件,<b>请确定填写无误后再进行删除操作!</b><br /> 请输入完整的文件路径,多个文件请使用";"隔开 <input type="text" name="all_files" size="50"/> <input type="submit" value="删除"/> </form> <br /> < ?php $action = $_GET['action']; //删除目录操作 if($action=='dirdel') { $all_folder = $_POST['all_folder']; if(!empty($all_folder)) { //根据分号识别多个文件夹 $folders = explode(';',$all_folder); if(is_array($folders)) { foreach($folders as $folder) { deldir($folder); echo $folder . '删除成功<Br>'; } } } } if($action=='filedel') { $all_files = $_POST['all_files']; if(!empty($all_files)) { //根据分号识别多个文件 $files = explode(';',$all_files); if(is_array($files)) { foreach($files as $file) { if(is_file($file)) { if(unlink($file)) { echo $file . '删除成功<br />'; } else { echo $file . '无法删除,请检查权限<br />'; } } else { echo $file . '不存在<br />'; } } } } } //删除目录及所包含文件函数 function deldir($dir) { //打开文件目录 $dh = opendir($dir); //循环读取文件 while ($file = readdir($dh)) { if($file != '.' && $file != '..') { $fullpath = $dir . '/' . $file; //判断是否为目录 if(!is_dir($fullpath)) { //如果不是,删除该文件 if(!unlink($fullpath)) { echo $fullpath . '无法删除,可能是没有权限!<br />'; } } else { //如果是目录,递归本身删除下级目录 deldir($fullpath); } } } //关闭目录 closedir($dh); //删除目录 if(rmdir($dir)) { return true; } else { return false; } } ?> </body> </html> |
源代码下载:deltool.rar
PS:在使用此工具的时候,首先要确定文件夹是由php程序生成(有Ftp创建的文件夹无法被删除);如果删除不成功,就要检查你输入的文件夹或文件的路径了,页面中提示的输入完整路径是指相对于此Php工具所在的目录的。如要删除的“abc”文件夹和上传的此Php工具同时在你站点的根目录,就在删除文件夹的输入框中直接填写“abc”即可,如果要删除的文件夹是在“abc”中的“123”文件夹,则输入“abc/123/”即可;文件的删除亦如此。
Leave Ur Comments
太棒了,你是抢到板凳的第一人!