Wie lösche ich rekursiv ein Verzeichnis und seinen gesamten Inhalt (Dateien + Unterverzeichnisse) in PHP?
In PHP können Sie die Funktion rmdir()
verwenden, um ein Verzeichnis zu entfernen, und die Funktion unlink()
verwenden, um eine Datei zu entfernen. Um ein Verzeichnis rekursiv sowie seinen gesamten Inhalt (Dateien + Unterverzeichnisse) zu löschen, können Sie eine Kombination dieser beiden Funktionen zusammen mit der Funktion scandir()
verwenden, um den Inhalt des Verzeichnisses zu scannen. Hier ist ein Beispielcode, der zeigt, wie dies gemacht werden kann:
<?php
function delete_directory($dir)
{
if (!file_exists($dir)) {
return true;
}
if (!is_dir($dir)) {
return unlink($dir);
}
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') {
continue;
}
if (!delete_directory($dir . DIRECTORY_SEPARATOR . $item)) {
return false;
}
}
return rmdir($dir);
}
Sie können diese Funktion dann mit dem Pfad des Verzeichnisses aufrufen, das Sie löschen möchten, als Argument und es wird das Verzeichnis rekursiv sowie seinen gesamten Inhalt löschen.
delete_directory("/path/to/directory");
Hinweis: Seien Sie vorsichtig mit dieser Funktion, da sie bei Verwendung auf dem falschen Verzeichnis Datenverlust verursachen kann, es wird dringend empfohlen, sie in einer sicheren Umgebung zu testen, bevor Sie sie in der Produktion verwenden.