Czyszczenie/usuwanie katalogu w PHP
październik 9th, 2008. Komentarzy: 4.
Kategorie: PHP, Zabawy z kodem.
Dzisiaj stanąłem przed koniecznością skasowania kilku katalogów i usunięcia zawartości kilku innych. Ponieważ uprawnienia do nich posiadał tylko serwer (użytkownik www, czy jakoś tak), musiałem to zrobić oczywiście z poziomu skryptu.
Doszedłszy do wniosku (po wielu bojach z Google), iż aby usunąć katalog, należy go najpierw opróżnić, w oparciu o kod znaleziony gdzieś w szuwarach Internetu, skonstruowałem własną funkcję, która może komuś się przyda
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 | /* EmptyDir, v0.1 uzycie: EmptyDir("nazwakatalogu"); EmptyDir("nazwakatalogu", false); // (lub 0) - skasowanie zawartosci katalogu EmptyDir("nazwakatalogu", true); // (lub 1) - usuniecie katalogu razem z zawartoscia, niekoniecznie w tej kolejnosci wartosci zwracane: true - powodzenie false - niepowodzenie */ function EmptyDir($dirName, $rmDir = false) { if($dirHandle = opendir($dirName)) { while(false !== ($dirFile = readdir($dirHandle))) if ($dirFile != "." && $dirFile != "..") if(!unlink($dirName . "/" . $dirFile)) return false; closedir($dirHandle); if($rmDir) if(!rmdir($dirName)) return false; return true; } else return false; } |
Jak widać, całość opiera się na unlink() (usuwanie pliku) oraz rmdir() (usuwanie pustego katalogu). Podobny przykład można zobaczyć w manualu funkcji rmdir().
4 komentarzy
kajetan dnia grudzień 30th, 2011
Czegoś takiego szukałem, działa świetnie z poziomu Crona.
Jaką licencję ma ten kod?
CZy można wykorzystać w komercyjnym projekcie?
WRonX dnia styczeń 2nd, 2012
@kajetan:
Podpisz mnie w źródle i kup puszkę Whiskasa jakiemuś bezdomnemu kotu, a możesz robić z tym kodem, co tylko zechcesz :)
(w przypadku projektów komercyjnych o większej skali, należy ufundować odpowiednio większą ilość kociego żarcia np. dla Fundacji AFN)
kajetan dnia styczeń 9th, 2012
Oki
Skrypt się przyda, nota autorska zachowana i link w źródle do tej strony i kupię whiskasa.
marek dnia wrzesień 23rd, 2009
Problem w tym, że nie wywala podkatalogów. Trzeba zapętlić funkcję w funkcji. To podobno obciąża serwer, ale jest do zrobienia. czyli:
edit (WRonX): oczywiście nie ponoszę odpowiedzialności za ten kod, bo nie chciało mi się go przetestować :)