Ordner + Unterordner sammt Inhalt mit PHP löschen

live4music

Mitglied
Hallo Community,

ich habe ein kleines Problem, ich versuche eine Funktion zu schreiben, die Ordner sammt Unterordner löscht. Habe bis jetzt 2 Varianten versucht, aber es geht irgendwie nicht. Wenn ich halt alle Unterordner lösche, dann wir mein Hauptordner gelöscht, so wie es sein sollte, aber sobald ich Unterordner estelle geht gar nichts. Vllt. habe ich irgendwo einen Fehler im Code ?

Danke schon mal für die Feedbacks.

Hier sind meine zwei Varianten

1.
PHP:
function album_delete($alb_id)
{

    $album = $_SERVER['DOCUMENT_ROOT'] . "/uploads/albums/".$alb_id."/";
    $files = glob($album . '*');

   if ($files)
    {
        foreach($files AS $file)
        {
            if (is_dir($file))
            {

                if (!@unlink($file))
                {
                	chmod($file, 0777);
                	unlink($file);
                }
            }
        }
    }

    if (!@rmdir($album))
    {
		chmod($album, 0777);
		rmdir($album);
    }
}

2.
PHP:
function album_delete($alb_id)
{

    $album = $_SERVER['DOCUMENT_ROOT'] . "/uploads/albums/".$alb_id;

    chmod($album,0777)

    if (is_dir($album))
    {
        $folder = opendir($album);

        while($filename = readdir($folder))
        {

            if ($filename != "." && $filename != "..")
                {
                    unlink($album."/".$filename);
                }
        }

    closedir($folder);
    rmdir($album);

    }

}
 
Irgendwelche Fehlermeldungen?

PS:
im 2. PHP-Code in der zeile mit
PHP:
chmod($album,0777)//;<-- fehlt das ';'
Copy und Paste fehler? ^^
 
och hab wohl ausversehen gelöscht :)) danke.

nein, keine Fehlermeldungen und es wird auch nichts gelöscht. Beide Scripts zeigen auch den Inhalt, aber dass mit löschen will irgendwie nicht klappen.

Sieht so aus: Hauptordner/ 2 Unterordner / und Inhalt

sobald ich Unterordner von Hand löschen, wird der Hauptordner per PHP gelöscht, sobald ich wieder Unterordner anlege passiert wieder nix.
 
Eine Rekursive Funktion währe angesagt, die durch jeden Unterordner durchgeht und dort ebenfalls die Dateien löscht. Leere Ordner lassen sich nicht löschen.

PHP:
function deleteFolder($albumPath){
	$items = scandir($albumPath);

	foreach($items as $itemName){
		if ($itemName != "." && $itemName != "..")
			$itemPath = $album.'/'.$itemName;
			if(isdir($itemPath)){
				// Unterordner löschen
				deleteFolder($itemPath);
			}else{
				// Datei löschen
				unlink($itemPath);
			}
		}
	}
	rmdir($albumPath);	
}
 
Hier meine Funktion zum Rekursiven löschen eines Verzeichnisses:
PHP:
function deleteDirectory($dir) {
	    if (!file_exists($dir)) return true;
	    
	    if (!is_dir($dir) || is_link($dir)) return unlink($dir);
	    
	        foreach (scandir($dir) as $item) {
	        	
	            if ($item == '.' || $item == '..') continue;
	            
	            if (!$this->deleteDirectory($dir . "/" . $item))
	            {
	                chmod($dir . "/" . $item, 0777);
	                if (!$this->deleteDirectory($dir . "/" . $item)) return false;
	            };
	        }
	        
	        return rmdir($dir);
    }
 
Zurück