Moin,
Zur Belohnung noch schnell die Funktion zum rekursiven Löschen eines ganzen Verzeichnisses:
<?php ### rmdirRecursive löscht ein Verzeichnis rekursiv. ## Parameter: ## $dirName : Verzeichnis ## $verbose : true - es wird ein Array mit allen gelöschten ## Dateien retourniert ## $verbose : false - es wird nur der Erfolg (true/false) geliefert. ## $errorType : siehe https://www.php.net/manual/de/errorfunc.constants.php function rmdirRecursive( $dirName, $verbose = false, $errorType = E_USER_ERROR ) { if ( ! is_dir( $dirName ) ) { trigger_error ( "'$dirName' existiert nicht oder ist kein Verzeichnis.", $errorType ); return false; } if ( $verbose ) { $return = []; } else { $return = true; } foreach( scandir( $dirName ) as $item ) { if( $item === ".." or $item === ".") { continue;
Nach dem continue
brauchst du das else
doch gar nicht mehr.
} else { $dso = $dirName . '/' . $item; if ( is_file( $dso ) or is_link( $dso ) ) { if ( ! unlink( $dso ) ) { trigger_error ( "'$dso' konnte nicht gelöscht werden." ); return false; } else { $return[] = $dso; } } else { $r = rmdirRecursive( $dso, $verbose, $errorType );
Ist !(is_file or is_link) == is_dir
?
if ( false === $r ) { trigger_error ( "'$dso' konnte nicht gelöscht werden." ); return false; } else { if ( $verbose ) { if ( is_array( $r ) ) { foreach ( $r as $i ) { $return[] = $i; } } } } } } } if ( rmdir( $dirName ) ) { if ( $verbose ) { $return[] = $dirName; } return $return; } else { trigger_error ( "'$dirName' konnte nicht gelöscht werden.", $errorType ); return false; } } ## Usage example: # print_r( rmdirRecursive( '/tmp/a', true, E_USER_ERROR ) );
Viele Grüße
Robert