2012-08-02 166 views
0

我有一個表格,我想刪除內容的所有文件夾的名稱。現在我有一個腳本,它將刪除我設置的文件夾的全部內容。現在我儘管可以在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 
+0

爲什麼不'EXEC( '室射頻'。路徑,$ R,$ S);'或'系統( '室射頻'。路徑);',讓OS做刪除文件和文件夾的工作,這是IMO工作的更好工具。除此之外:嘗試'require_once',好像你要麼多次包含這個腳本(每次重新聲明函數,因此錯誤),要麼檢查你是否碰巧在某處有更多的'destroy'函數 – 2012-08-02 11:33:03

回答

1

你爲什麼要用「define」d常量而不是僅僅是實際的潛在變量作爲destroy(PATH);?一旦你把這個功能作爲批量建議的循環,這應該工作,我會想...

0

您所定義的最裏面的destroy功能while循環,所以第二次談到運行循環功能已經定義。將函數定義移到while循環之外以解決此問題。

+0

我理解問題是一個函數不能被聲明多次。解決方案確實是這樣,將其置於惡意循環之外。然而:我怎樣才能做到這一點,而不會破壞代碼的全部功能? – user1555076 2012-08-02 11:32:48

+0

我不認爲它會 - 在我看到的功能中沒有什麼需要它在那個位置。你嘗試過嗎?只需將它全部複製並移動到文件末尾,看看會發生什麼。 – 2012-08-02 11:38:56

0

謝謝大家的幫助。我看了你所有的答案,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); 

} 
相關問題