Ostatnimi czasy, pisząc pewien skrypt PHP do obsługi plików na serwerze, potrzebowałem narzędzia, które usunie wskazany przeze mnie katalog. Sprawa nie byłaby trudna, gdyby chodziło o skasowanie folderu pustego (niezawierającego wewnątrz żadnych plików i innych podkatalogów). W tym celu wystarczyłoby użyć następującej funkcji:
1 2 3 4 | <?php $katalog = 'home/pliki'; rmdir($katalog); ?> |
Gdzie zmienna $katalog zawiera ścieżkę do katalogu, który chcemy usunąć.
Sprawa komplikuje się jednak, kiedy zależy nam na permanentnym skasowaniu danego katalogu, wraz ze wszystkim co zawiera w sobie. Zastanawiałem się jak to wykonać, poszukując również odpowiedzi na kilku forach. Tam odnalazłem link do manual’a PHP. Gotowa funkcja, która pozwoli nam wykonać zamierzoną operację wygląda w sposób następujący:
1 2 3 4 5 6 7 8 9 10 11 | function removeDir($path) { $dir = new DirectoryIterator($path); foreach ($dir as $fileinfo) { if ($fileinfo->isFile() || $fileinfo->isLink()) { unlink($fileinfo->getPathName()); } elseif (!$fileinfo->isDot() && $fileinfo->isDir()) { removeDir($fileinfo->getPathName()); } } rmdir($path); } |
Aby wywołać powyższą funkcję, wystarczy, że w miejscu gdzie chcemy jej użyć, wpiszemy kod:
1 2 3 4 | <?php $katalog = 'home/pliki'; removeDir($katalog); ?> |
To wszystko. Mam nadzieję, że przyda się komuś powyższe rozwiązanie.
Wielkie Dzięki! Działa bez problemu :)
Czegos takiego szukałem. Miałem kilka folderów których niemogłem w normalny sposób usunąc teraz to co innego xD
kilka słów objaśnień co do nawiasów $ i innych by sie przydało, bo umieszczając to wszystko niestety nie działa. kolory mają znaczenie zapewne bo skoro wyrazy sa wyróżnione to coś to musi oznaczać…
mam 500 plików w Home które nie dają sie usunąć ze względu na brak uprawnień. pojęcia nie wiem skąd recupe_dir się potworzyło ale zabrało całe wolne miejsce. zwykłe polecenia rm niestety nie skutkują. Chciałem spróbować Twojego sposobu ale jak każdy informatyk nie mówisz „po polsku” więc jak byś mógł przetłumaczyć.. :D