Rekurencyjne usuwanie katalogu z plikami w PHP.
Często mam do czynienia z zadaniem usunięcia folderu z całą jego zawartością, Mam dość ciągłego wymyślania koła na nowo, Znalazłem tutaj świetną funkcję PHP, który rekurencyjnie przechodzi przez wszystkie foldery, usuwając pliki, a następnie katalog.
Oto rzeczywista funkcja:
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 31 32 33 34 35 36 37 |
function RemoveDir($path) { if(file_exists($path) && is_dir($path)) { $dirHandle = opendir($path); while (false !== ($file = readdir($dirHandle))) { if ($file!='.' && $file!='..')// исключаем папки с назварием '.' и '..' { $tmpPath=$path.'/'.$file; chmod($tmpPath, 0777); if (is_dir($tmpPath)) { // если папка RemoveDir($tmpPath); } else { if(file_exists($tmpPath)) { // удаляем файл unlink($tmpPath); } } } } closedir($dirHandle); // удаляем текущую папку if(file_exists($path)) { rmdir($path); } } else { echo "Удаляемой папки не существует или это файл!"; } } |
Opiszę trochę logikę tej funkcji. Funkcja otrzymuje jako parametr ścieżkę do folderu. Pierwszą rzeczą, którą robi, jest sprawdzanie, czy ten folder istnieje i czy w ogóle jest ten folder jeśli wynik sprawdzenia jest pozytywny to otwiera folder do odczytu i rozpoczyna się cykl czytania folderu, uzyskać całą jego zawartość (lornetka składana, pliki, spinki do mankietów) Następnie nie zapomnij wykluczyć folderów „.”(punkt) I '..'(dwa punkty) pierwszy to link do tego katalogu, drugi to link do katalogu o poziom wyżej. Następnie zmieniamy prawa dostępu do pliku lub katalogu, a jeśli jest to folder, przejdź do niego i usuń wszystko, co się w nim znajduje, w przeciwnym razie jest to plik lub link, a następnie po prostu go usuwamy.
Przykład użycia funkcji:
1 2 3 |
// путь от корня сайта $DeletedFolder='/folder'; RemoveDir($_SERVER['DOCUMENT_ROOT'].$DeletedFolder); |
/*
- Podstawowy kurs projektowania stron internetowych;
- Układ stron;
- Ogólny kurs CMS WordPress oraz kontynuacja kursu dotyczącego tworzenia szablonów;
- Tworzenie stron internetowych w PHP.