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.'; 





}







}

最初の削除は正常に戻りますが、2 番目の削除ではうまくいきません。

../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
4

3 に答える 3

1

destroy(PATH);実際の基になる変数を次のように呼び出すのではなく、「定義された」定数を使用して関数を呼び出すのはなぜdestroy($directory);ですか? Bulkが提案したように関数をループから外すと、これはうまくいくはずです...

于 2012-08-02T11:44:04.937 に答える
0

最も外側の while ループ内で関数を定義しているdestroyため、ループを 2 回目に実行すると、関数は既に定義されています。これを修正するには、関数定義を while ループの外側に移動します。

于 2012-08-02T11:28:41.237 に答える
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);

}
于 2012-08-02T11:57:23.293 に答える