Kasowanie folderu i jego zawartości przez PHP

Korzystając z serwera FTP, nie raz zdarzy nam się nie tylko tworzyć, ale także kasować jego zasoby, np. foldery. Kasowanie folderów to także przydatna funkcja wielu skryptów działających na hostingu i wykonujących różnego rodzaju zadania, czy to niezbędne do działania strony czy też np. zarządzania zasobami i kopiami bezpieczeństwa.

Domyślnie, kasowanie folderu najprościej wykonać logując się klientem FTP (np. Total Commander) do serwera FTP a następnie kasując wybrany zasób. Jeśli z jakiś powodów operacja ta nie jest możliwa do wykonania, lub oczekujemy automatyzacji procesu, poprzez dodanie odpowiedniego wpisu do skryptu, polecamy skorzystać z poniższej składni.

Jak usunąć pusty katalog bez żadnej zawartości?

Aby usunąć pusty folder/plik (niezawierający żadnych plików i innych podkatalogów) bezpośrednio na serwerze FTP, należy stworzyć plik o przykładowej nazwie „usun.php„. W jego zawartości wpisz poniższy fragment kodu (zmieniając nazwę folderu/pliku):

<?php
$katalog = 'home/pliki';
rmdir($katalog);
?>

Zmienna $katalog zawiera ścieżkę do katalogu, który chcemy usunąć.

Przygotowany w ten sposób plik „usun.php” należy umieścić w katalogu głównym serwera. Aby wskazany katalog, mógł zostać usunięty, wywołaj plik „usun.php” za pomocą przeglądarki WWW. W pasku adresu przeglądarki WWW wpisz adres z bezpośrednim wskazaniem na ten plik.
Przykład: http://nazwa_serwera.home.pl/usun.php

W ten sposób zostanie wykonana dyrektywa, która została zapisana w zawartości wywołanego pliku usun.php.

Jak usunąć katalog z zawartością (np. z plikami i/lub podkatalogami)?

W sytuacji, gdy zależy nam na trwałym skasowaniu danego katalogu, wraz z całą jego zawartością, możesz skorzystać z gotowej funkcji PHP (dokumentacja PHP). Gotową funkcję, która pozwoli wykonać zamierzoną operację znajduje się poniżej:

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ę, należy w miejscu, w którym chcemy użyć funkcji, wpisać poniższy kod:

<?php
$katalog = 'home/pliki';
removeDir($katalog);
?>

Więcej rozwiązań

  • Czy artykuł był pomocny ?
  • Tak   Nie