Hallo,
mir war ein folgenschwerer Fehler unterlaufen. Ich wollte mit "remove_tree" alle Ordner in einem Verzeichnis löschen, deren Name nicht in einem Hash definiert waren. Das Ergebnis war, das alles im Parent-Odner, welcher das Root-Verzeichnis des Webservers war, gelöscht wurde. OK, die Zugriffsrechte hätten das verhindern sollen, es ist aber nunmal passiert. Zukünftig werde ich die Zugriffsrechte besser kontrollieren und remove_tree nur eindeutig definierte absolute Pfade übergeben, aber kann mir jemand erklären, was hier genau schief gelaufen ist?
Hat remove_tree den "../"-Ordner gelöscht oder ist Perl ins "../"-Verzeichnis gewechselt, nachdem der relative Pfad "./" gelöscht wurde? Oder was anderes?
use File::Path qw(remove_tree);
chdir("$MEDIA_DIR");
opendir(DIR, ".") || die $!;
@entries = readdir(DIR);
closedir(DIR);
foreach (@entries) {
remove_tree("$_") unless defined $media{"_$_"};
}
Last edited: 2011-11-11 15:46:34 +0100 (CET)