Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Kasowanie pełnego katalogu

Funkcja rmdir() języka PHP, umożliwia kasowanie tylko i wyłącznie katalogów, które nie zawierają żadnej zawartości. Co więc zrobić kiedy musimy skasować folder, który zawiera inne pliki lub katalogi?

Poniższa funkcja PHP, kasuje cały katalog wraz z jego zawartością:

$directory = "../folder"; 
 
 function deleteDir($directory, $empty = false) { 
      if(substr($directory,-1) == "/") { 
           $directory = substr($directory,0,-1); 
      } 
 
      if(!file_exists($directory) || !is_dir($directory)) { 
           return false; 
      } elseif(!is_readable($directory)) { 
           return false; 
      } else { 
           $directoryHandle = opendir($directory); 
 
           while ($contents = readdir($directoryHandle)) { 
                if($contents != '.' && $contents != '..') { 
                     $path = $directory . "/" . $contents; 
 
                     if(is_dir($path)) { 
                         deleteAll($path); 
                    } else { 
                          unlink($path); 
                     } 
                } 
           } 
 
           closedir($directoryHandle); 
 
           if($empty == false) { 
                if(!rmdir($directory)) { 
                    return false; 
                } 
           } 
 
           return true; 
      } 
 }

Do funkcji w zmiennej $directory przekazujemy ścieżkę do folderu, który chcemy skasować (UWAGA: funkcja kasuje tylko foldery, nie możemy podawać ścieżki do pliku). Funkcja zwraca true jeżeli katalog został skasowany, a jeżeli wystąpiły jakieś komplikacje to false.

Funkcję możemy wykorzystać w ten sposób:

$directory = "../folder"; //ścieżka do katalogu, względem pliku, w którym znajduje się funkcja kasująca folder
deleteDir($directory, $empty = false); //kasujemy katalog

Przy używaniu kodu, należy zachować szczególną uwagę, gdyż skasowanych plików i katalogów praktycznie nie da się odzyskać.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany.

Pin It on Pinterest