Hin und wieder hat man einen Ordner mit zig verschiedenen Dateien am Server, den man per PHP löschen möchte oder muss. Dies kann man relativ einfach mit wenigen Zeilen PHP und einer while Schleife erledigen. Wichtig dabei sind die 3 PHP Befehle opendir (öffnet ein Verzeichnis zur weiteren Verarbeitung), readdir (liest die Dateien aus) und unlink (löscht eine Datei). Hier nun das komplette Script:
//Ordnername festlegen in dem die zu löschenden Files liegen
$ordnername = "mein/ordnername/";
//überprüfen ob das Verzeichnis überhaupt existiert
if (is_dir($ordnername)) {
//Ordner öffnen zur weiteren Bearbeitung
if ($dh = opendir($ordnername)) {
//Schleife, bis alle Files im Verzeichnis ausgelesen wurden
while (($file = readdir($dh)) !== false) {
//Oft werden auch die Standardordner . und .. ausgelesen, diese sollen ignoriert werden
if ($file!="." AND $file !="..") {
//Files vom Server entfernen
unlink("mein/ordnername/$file");
}
}
//geöffnetes Verzeichnis wieder schließen
closedir($dh);
}
}
Oder schöner gleich als Funktion verpackt
function deleteFilesFromDirectory($ordnername){
//überprüfen ob das Verzeichnis überhaupt existiert
if (is_dir($ordnername)) {
//Ordner öffnen zur weiteren Bearbeitung
if ($dh = opendir($ordnername)) {
//Schleife, bis alle Files im Verzeichnis ausgelesen wurden
while (($file = readdir($dh)) !== false) {
//Oft werden auch die Standardordner . und .. ausgelesen, diese sollen ignoriert werden
if ($file!="." AND $file !="..") {
//Files vom Server entfernen
unlink("".$ordnername."".$file."");
}
}
//geöffnetes Verzeichnis wieder schließen
closedir($dh);
}
}
}
//Funktionsaufruf - Directory immer mit endendem / angeben
deleteFilesFromDirectory("mein/ordnername/");
uwe367Uwe schreibt:
Klappt soweit ganz gut, Danke:)
Jedoch ist nicht jeder Server gleich konfiguriert und so wäre es sicher angebracht das Script anzuweisen die zu löschenden Dateien auf CHMOD 777 zu setzen damit sie gelöscht werden können.
Wäre es möcglch das Script dahingehend zu erweitern?
Gruss Uwe
André schreibt:
Hallo,
ist es möglich das Verzeichnis erst nach 3 Minuten zu löschen?
Gruss André
uegk schreibt:
Wie wärs wenn mann das verzeichnis löscht und neu macht? Geht vermutlich schneller
steve88u schreibt:
Ausser man hat im übergeordneten Verzeichnis die Berechtigung nicht Verzeichnisse zu erstellen, dann geht das nur mit Verzeichnisinhalt löschen 😉
Directory schreibt:
Dies kann man relativ einfach mit wenigen Zeilen PHP und einer while Schleife erledigen.