Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

dateien und verzeichnisse löschen mit php





Frage

hallo leute, hab da ein prob das mich wurmt : hab ein script geschrieben, welches unter anderem bei anlegen eines neuen kunden für diesen auch ein verzeichnis anlegt, welches mit der kundennummer benannt ist. in diesem verzeichnis ird dann je projekt ein weiteres verzeichnis, benannt nach projektnummer angelegt, in welches dann die projektdateien upgeloadet werden. weiter gibt im projektverzeichnis immer ein verzeichnis aktuell, wo immer der aktuellste stand abrufbar ist. alles kein prob mit anlegen und so. wenn man aber den kunden wieder löschen will, müssen neben allen zugehörigen datenbankeinträgen auch die entsprechenden dateien und verzeichnisse gelöscht werden, die im verzeichnis "$Kundennr" liegen. aber hier krieg ich immer fehlermeldungen, zb. permission denied, obwohl ich derselbe bin, der sie auch angelegt hat. ausserdem werden die dateien auch ohne die meldung nicht gelöscht. hier mal einer meiner versuche: $vname = $docroot.$pathto."/clients/".$nr; opendir($vname); $verzeichnis = dir("$vname"); while($eintrag = $verzeichnis->read()){ echo $eintrag."<br>"; if(is_file($eintrag)) unlink($eintrag); if(is_dir($eintrag)){ echo "verzeichnis : ".$eintrag; $vname1 = "$vname/$eintrag"; opendir("$vname1"); $verzeichnis1 = dir("$vname1"); while($eintrag1 = $verzeichnis1->read()){ echo $eintrag1."<br>"; if(is_file($eintrag1)) unlink($eintrag1); if(is_dir($eintrag1)){ } elseif(is_file($eintrag1)) rmdir("$eintrag1"); } } }

Antwort 1 von semi

Wahrscheinlich liegt es daran, dass Du die Verzeichnisse "." und ".." nicht berücksichtigt hast.
Versuche das hier:

function deltree($dir) {

  $fh = opendir($dir);
  while($entry = readdir($fh)) {
    if($entry == ".." || $entry == ".")
      continue;
    if(is_dir($dir . $entry))
      deltree($dir . $entry . "/");
    else
      unlink($dir . $entry);
  }
  closedir($fh);
  rmdir($dir);

}

deltree("./test/");
Beachte, dass der Verzeichnissname, der an deltree übergeben wird mit / endet.

Antwort 2 von onemice

super, danke !
funzt :-)

mein gedankengang war schon richtig, nur falsch und überkompliziert geschrieben...

nochmals vielen dank :-)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: