分享到:

我用的是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/”即可;文件的删除亦如此。

阅读量:2269 次| 分类: 电脑, 网络 | 标签: , , ,

Leave Ur Comments

太棒了,你是抢到板凳的第一人!

Comments List

标题为“Linux空间中文件或文件夹无法删除的解决办法”的相关评论列表