1 2 3 4 5 6 7 8 9 10 11 | function rrmdir( $dir ) {
if ( is_dir ( $dir )) {
$objects = scandir( $dir );
foreach ( $objects as $object ) {
if ( $object != “.” && $object != “..”) {
if ( filetype ( $dir .”/”. $object ) == “dir”) rrmdir( $dir .”/”. $object ); else unlink( $dir .”/”. $object );
}
}
reset( $objects );
}
}
|
Nach dem Login kopieren
rmdir
(PHP 4, PHP 5)
rmdir – Verzeichnis löschen
Fehler melden Beschreibung
bool rmdir ( string $dirname )
Versuchen Sie, das angegebene Verzeichnis zu löschen von dirname Inhaltsverzeichnis. Das Verzeichnis muss leer sein und über entsprechende Berechtigungen verfügen. Gibt TRUE bei Erfolg oder FALSE bei Fehler zurück.
Hinweis: Ab PHP 5.0.0 kann rmdir() auch mit bestimmten URL-Wrapping-Protokollen verwendet werden. Sehen Sie sich die Liste der unterstützten Protokolle und Wrapper an, um zu sehen, welche URL-Wrapping-Protokolle rmdir() unterstützt.
Hinweis: Unterstützung für Kontext wurde in PHP 5.0.0 hinzugefügt. Eine Beschreibung des Kontexts finden Sie in der Stream-Funktion.
Hinweis: Wenn der abgesicherte Modus aktiviert ist, prüft PHP bei der Ausführung des Skripts, ob das vom Skript manipulierte Verzeichnis dieselbe UID (Eigentümer) wie das ausgeführte Skript hat.
Siehe mkdir() und unlink().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php
function rrmdir( $dir ) {
if ( is_dir ( $dir )) {
$objects = scandir( $dir );
foreach ( $objects as $object ) {
if ( $object != "." && $object != ".." ) {
if ( filetype ( $dir . "/" . $object ) == "dir" ) rrmdir( $dir . "/" . $object ); else unlink( $dir . "/" . $object );
}
}
reset( $objects );
rmdir ( $dir );
}
}
?>
|
Nach dem Login kopieren
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php
function deleteAll( $directory , $empty = false) {
if ( substr ( $directory ,-1) == "/" ) {
$directory = substr ( $directory ,0,-1);
}
if (! file_exists ( $directory ) || ! is_dir ( $directory )) {
return false;
} elseif (! is_readable ( $directory )) {
return false;
} else {
$directoryHandle = opendir( $directory );
while ( $contents = readdir( $directoryHandle )) {
if ( $contents != '.' && $contents != '..') {
$path = $directory . "/" . $contents ;
if ( is_dir ( $path )) {
deleteAll( $path );
} else {
unlink( $path );
}
}
}
closedir ( $directoryHandle );
if ( $empty == false) {
if (! rmdir ( $directory )) {
return false;
}
}
return true;
}
}
?>
[/code]
A patch to previous script to make sure rights for deletion is set:
|
Nach dem Login kopieren
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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 (!deleteDirectory( $dir . "/" . $item )) {
chmod ( $dir . "/" . $item , 0777);
if (!deleteDirectory( $dir . "/" . $item )) return false;
};
}
return rmdir ( $dir );
}
?>
|
Nach dem Login kopieren
Weitere Artikel zum rekursiven Löschen von Verzeichnissen und Dateien unter Verzeichnissen in rrmdir php finden Sie auf der chinesischen PHP-Website!