怎么解决无法删除虚拟主机文件或文件夹 |
发布时间: 2014/8/12 11:12:58 |
怎么解决无法删除虚拟主机文件或文件夹,大家在使用Linux的虚拟主机时候有没有出现过通过FTP无法删除网站路径中的一些文件夹和文件,FTP工具软件会提示Permission Denied(没有权限),或者 550删除目录操作失败。今天小编在操作FTP的时候就出现了这种问题。出现的原因一般都是这些目录或文件是PHP程序以管理员用户写入的,而一般虚拟主机的用户名下的用户又没有管理员用户组的权限,因此无法删除。
我们可以把下面这个PHP代码放到对应的虚拟主机的空间上运行,按提示输入文件夹或文件名即可。(注意这里最好使用相对路径。)*.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <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> </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>
以上代码中的标点符号可能被转化为中文标点,会出现错误,为了防止出错大家也可以直接把标点符号改成英文状态下的,然后上传到虚拟主机上。下载好以后然后将*.php上传到虚拟主机根目录,然后访问该文件。然后将要删除的文件或者文件夹的路径填写上去,然后刷新下虚拟主机即可发现文件已被删除。 本文出自:亿恩科技【www.enkj.com】 |