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:
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 :-)
funzt :-)
mein gedankengang war schon richtig, nur falsch und überkompliziert geschrieben...
nochmals vielen dank :-)