leere verzeichniss löschen

brainsucker

Erfahrenes Mitglied
Guten Abend zusammen,

ich häng hier schon ne ganze weile an einem Problem welches ich irgendwie nicht gelöst bekomme.

Folgende Ausgangslage:

Verzeichnisstruktur:

upload/untervz1/untervz2/untervz3/untervz4

Ich wollte mir ein script schreiben welches prüft ob das letzte verzeichnis(in diesem Fall: untervz4) leer ist. Ist es leer so kann es gelöscht werden.

Danach wird untervz3 geprüft, wenn auch dieses leer ist kann es ebenfalls gelöscht werden. das ganze soll soweit zurückgehen dass nur noch das uploadverzeichnis übrig bliebe. Dieses darf nicht gelöscht werden.

Mein bisheriger Ansatz:

PHP:
$countfiles=0;
$handle = "upload/".$untervz1."/".$untervz2."/".$untervz3."/".$untervz4."/";

if(is_dir($handle))
	{
	$verz = opendir ($handle);
	while($f = readdir($verz)){ $countfiles++;}
	$countfiles = $countfiles-2;
	if($countfiles == 0){rmdir($handle);}	
	}
						
$countfiles2=0;
$handle2 = "upload/".$untervz1."/".$untervz2."/".$untervz3."/";
if(is_dir($handle2))
	{						
	$verz2 = opendir ($handle2);
	while($f = readdir($verz2)){echo $f."<br>"; $countfiles2++;}
	$countfiles2 = $countfiles2-2;
	if($countfiles2 == 0){echo "loesche";rmdir($handle2);}	
	}

// bis eben upload erreicht ist

Beim erstens chritt klappt es auch. Im zweiten schritt funktionierts dann nicht mehr. weil er behauptet dort noch das zuvor gelöschte untervz4 zu finden. (Habe mir einfach $f einfach ausgeben lassen, und da tauchte das dann auf)

Ich hab die einzelnen Teilschritte mal in separate Dateien und dann nacheinander ausgeführt, da funktionierts dann.

Wäre halt nur schöner wenn man das in einem rutsch machen könnte. Hoffe ihr versteht mein Problem und könnt mir helfen
 
ja, also wenn ich die zeilen unter einander habe


wenn ich die sripts in einzelne dateien aufteile und nach einander aufrufe dann löscht er...
 
Mal eine Frage, wird es immer bei der gleichen anzahl an verzeichnissen bleiben die kontrolliert werden müssen?
Falls nein, müßtes du bei jeder änderung die funktion umbauen...

Daher empfehle ich dir eine rekrusive verzeichnisse abfrage...
Dann muß du lediglich das (root) verzeichniss für die funktion angeben und alle fortlaufenden verzeichnisse werden bis ins endlose (php maximum prozesslaufzeit durchgeführt)...
 
Die Anzahl ist fix vorgegeben. An einen rekursiven Mechanismus hatte ich auch schon gedacht, allerdings die Idee wieder verworfen, da es bei bestimmten Verzeichnissen nicht sinnvoll wäre zu löschen wenn sie leer sind.
 
Hi,

also bei mir funktioniert Dein Code. Setz' mal ein closedir($verz) vor rmdir($handle). Sonst weiß' ich's auch nicht...
Zur Rekursion: Woran erkennt denn Deine Funktion die Verzeichnisse, bei denen es nicht sinnvoll ist, zu löschen?

LG
 
Zurück