ich zwei rekursive Scripts versucht haben, um den Inhalt des Ordners zu wischen:Seltsam php Verhalten rekursive Löschen des Ordners entfernt nur 527 Datei anstatt alle
Faust ein:
function clearDirectory($path)
{
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(get_home_path().$path, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST);
foreach ($files as $filename => $fileInfo) {
if ($fileInfo->isDir()) {
rmdir($filename);
} else {
unlink($filename);
}
}
}
Zweite ein:
function rrdir($path)
{
$src = get_home_path() . $path;
$dir = opendir($src);
while(false !== ($file = readdir($dir))) {
if (($file != '.') && ($file != '..')) {
$full = $src . '/' . $file;
if (is_dir($full)) {
rrmdir($full);
}
else {
unlink($full);
}
}
}
closedir($dir);
rmdir($src);
}
In beiden Fällen macht es das gleiche. Aber ich finde seltsames Problem, dass es nicht alle Dateien entfernt, die es nur für 527 von 706 tut.
Wenn ich eines dieser Skripte zweimal durchführe entfernt es alle Dateien ... Aber tut dies nicht von der erstes Mal.
Hat nichts mit Linux oder einer anderen Berechtigung zu tun und alle Berechtigungen sind in Ordnung.
Es gibt keine Fehler in den Protokollen geschrieben alles funktioniert reibungslos mit diesen beiden Skripten das Problem ist, dass sie nicht alle Dateien vom ersten Mal löschen.
Ich bin Windows 10 x64, mit virtuellen Vagrant und Homestead-Box. Getestet rm -f *
es funktioniert gut. Was mache ich falsch?
Mögliche Duplikate von [Wie lösche ich rekursiv ein Verzeichnis und seinen gesamten Inhalt (Dateien + Unterverzeichnisse) in PHP?] (Http://stackoverflow.com/questions/3338123/how-do-i-recursively-delete -a-Verzeichnis-und-seine-gesamte-Inhalte-files-sub-dir) – wazelin
Problem in der ersten, dass Sie versuchen, den Ordner mit 'rmdir()' zu löschen, aber es wird nur den Ordner löschen, wenn es leer ist also werden sie übersprungen, wenn nicht. – JustOnUnderMillions
ist 'rrmdir' falscher Tippfehler? – JustOnUnderMillions