删除所有文件夹的内容
我有一个表格,我想删除内容的所有文件夹的名称。现在我有一个脚本,它将删除我设置的文件夹的全部内容。现在我尽管可以在while循环中放置该代码,并且会删除所有文件夹的内容。但是,我收到一个错误。这里是代码,错误在底部,怎么回事,我该如何解决这个问题?删除所有文件夹的内容
$query = "SELECT * FROM gemeentes";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$gemeente1 = str_replace(" ","",$row['gemeente']);
$gemeente2 = strtolower($gemeente1);
$gemeente3 = str_replace("(","-",$gemeente2);
$gemeente4 = str_replace(")","",$gemeente3);
$gemeente5 = str_replace(",","",$gemeente4);
if(isset($_POST['GO'])) {
$directory = "../subdomains/".$gemeente5."/httpdocs/";
echo $directory;
define('PATH', $directory);
function destroy($dir) {
$mydir = opendir($dir);
while(false !== ($file = readdir($mydir))) {
if($file != "." && $file != "..") {
chmod($dir.$file, 0777);
if(is_dir($dir.$file)) {
chdir('.');
destroy($dir.$file.'/');
rmdir($dir.$file) or DIE("couldn't delete $dir$file<br />");
}
else
unlink($dir.$file) or DIE("couldn't delete $dir$file<br />");
}
}
closedir($mydir);
}
destroy(PATH);
echo 'all done.';
}
}
第一删除回来罚款,第二不会做的把戏了:
../subdomains/aaenhunze/httpdocs/all done.../subdomains/aalburg/httpdocs/
Fatal error: Cannot redeclare destroy() (previously declared in /vhosts/url.nl/httpdocs/deletecontent.php:50) in /vhosts/url.nl/httpdocs/deletecontent.php on line 50
你为什么要用“define”d常量而不是仅仅是实际的潜在变量作为destroy(PATH);
?一旦你把这个功能作为批量建议的循环,这应该工作,我会想...
您所定义的最里面的destroy
功能while循环,所以第二次谈到运行循环功能已经定义。将函数定义移到while循环之外以解决此问题。
我理解问题是一个函数不能被声明多次。解决方案确实是这样,将其置于恶意循环之外。然而:我怎样才能做到这一点,而不会破坏代码的全部功能? – user1555076 2012-08-02 11:32:48
我不认为它会 - 在我看到的功能中没有什么需要它在那个位置。你尝试过吗?只需将它全部复制并移动到文件末尾,看看会发生什么。 – 2012-08-02 11:38:56
谢谢大家的帮助。我看了你所有的答案,OzgurH提出了什么建议。工作代码:
$query = "SELECT * FROM gemeentes";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$gemeente1 = str_replace(" ","",$row['gemeente']);
$gemeente2 = strtolower($gemeente1);
$gemeente3 = str_replace("(","-",$gemeente2);
$gemeente4 = str_replace(")","",$gemeente3);
$gemeente5 = str_replace(",","",$gemeente4);
if(isset($_POST['GO'])) {
$directory = "../subdomains/".$gemeente5."/httpdocs/";
echo $directory;
destroy($directory);
echo 'all done.';
}
}
function destroy($dir) {
$mydir = opendir($dir);
while(false !== ($file = readdir($mydir))) {
if($file != "." && $file != "..") {
chmod($dir.$file, 0777);
if(is_dir($dir.$file)) {
chdir('.');
destroy($dir.$file.'/');
rmdir($dir.$file) or DIE("couldn't delete $dir$file<br />");
}
else
unlink($dir.$file) or DIE("couldn't delete $dir$file<br />");
}
}
closedir($mydir);
}
为什么不'EXEC( '室射频'。路径,$ R,$ S);'或'系统( '室射频'。路径);',让OS做删除文件和文件夹的工作,这是IMO工作的更好工具。除此之外:尝试'require_once',好像你要么多次包含这个脚本(每次重新声明函数,因此错误),要么检查你是否碰巧在某处有更多的'destroy'函数 – 2012-08-02 11:33:03