Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie katalogów wraz z plikami i katalogami
Forum PHP.pl > Forum > PHP
deha21
Witam,
Aktualnie mam taki skrypt który usuwa katalog wraz z plikami. Ale jeśli w tym katalogu są inne katalogi to wyskoczy błąd. Chciałbym żeby jeżeli jest tam katalog to żeby też go usunąło wraz z zawartością, jeśli w nim będą foldery to żeby też ta akcja się powtórzyła.
Próbowałem zrobić to za pomoca DirectoryIterator albo całkiem coś pomotałem.
Oto kod który mam teraz:
  1. if (isset($_POST['deletecatalog'])) {
  2. $katalog = "../".$directory."/".$_POST['deletecatalog'];
  3. if(glob($katalog.'/*')) {
  4. foreach (glob($katalog.'/*') as $filename){
  5. if($filename != '$katalog' && $filename != '..') {unlink($filename);}
  6. }
  7. }
  8. rmdir("../".$directory."/".$_POST['deletecatalog']);
  9. }
zzeus
Ładny przykład - http://www.php.net/manual/pl/directoryiterator.islink.php
deha21
Dzięki. Rzeczywiscie ładny przykład, gdyby tylko mi działał winksmiley.jpg

  1. if(isset($_POST['deletecatalog'])) {
  2.  
  3. function removeDir($path) {
  4. $dir = new DirectoryIterator($path);
  5. foreach ($dir as $fileinfo) {
  6. if ($fileinfo->isFile() || $fileinfo->isSymlink()) { // linia 152
  7. unlink($fileinfo->getPathName());
  8. } elseif (!$fileinfo->isDot() && $fileinfo->isDir()) {
  9. removeDir($fileinfo->getPathName());
  10. }
  11. }
  12. rmdir($path);
  13. }
  14. removeDir('../'.$directory.'/'.$_POST['deletecatalog']);
  15.  
  16. }


Błąd:
Kod
Fatal error: Call to undefined method DirectoryIterator::isSymlink() in /home/deha21/domains/dhetman.pl/public_html/filesbrowser/admin/filesbrowser.php on line 152
erix
A jak masz dostęp do poleceń powłoki, to nie lepiej wywołać:
  1. exec('rm -rf /home/user/katalog');

?
deha21
Może i lepiej, i prościej ale nie chciałbym z tego korzystać. Skrypt ma być do różnych stron które nie zawsze będą stały na moim serwerze. A na innych dostęp do tych funkcji może być różny.
thek
To użyj is_link() winksmiley.jpg
Inna sprawa, że jeśli to admin i masz możliwość, to możesz zawsze uzyć exec() i jako komendę wrzucić rekurencyjne, wymuszone usuwanie katalogu smile.gif
EDIT: Byli szybsi z tym execiem winksmiley.jpg
deha21
Dzięki thek! Z is_link działa idealnie winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.