Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/WINDOWS] Usuwanie katalogów
Forum PHP.pl > Forum > PHP
juzwa
podczas dodawania rekordu jest możliwość dodawania plików - zgrywam je na dysk do tymczasowego katalogu o nazwie typu wlkejwe239asasd4_ID - czyli jakiś losowy ciąg i ID z sesji, potem sobie te kojarzę z dodanym już rekordem

po wszystkim

  1. <?php
  2. if(is_dir('tmpfiles/'.$folderName))
  3. {
  4.   foreach(new DirectoryIterator('tmpfiles/'.$folderName) as $file)
  5.  {
  6.    if(!$file->isDot())
  7.       @unlink('tmpfiles/'.$folderName.'/'.$file->getFilename());
  8.   }    
  9.   @rmdir('tmpfiles/'.$folderName);
  10. }
  11. ?>


taką instrukcją kasuję ten tymczasowy katalog wraz z zawartością, o ile kasowanie plików przebiega sprawnie to kasowanie katalogu nie kończy się dobrze

mam ostrzeżenie Permission denied - ale nie wiem czemu, nie jest to linuks tylko windows, więc takich problemów (chyba) być nie powinno - ale są, stąd moje pytanie. Jak usunąć katalog? co robię źle
marcio
Ogolnie nie znam funkcji tego iteratora ale dobrze robisz kasujesz wszystkie pliki a potem katalog ale pamietam ze katalog musis miec chmod 777 albo 766
juzwa
Cytat(marcio @ 18.10.2008, 23:02:32 ) *
Ogolnie nie znam funkcji tego iteratora ale dobrze robisz kasujesz wszystkie pliki a potem katalog ale pamietam ze katalog musis miec chmod 777 albo 766


takie(777) mu nadaję w funkcji mkdir

ale mimo to rmdir nie działa
marcio
Jesli dajesz chmod za pomoca mkdir() to przez nim ustaw umask() na 0 bo w przeciwnym razie chmod moze w ogole nie byc rowny 777
juzwa
Cytat(marcio @ 19.10.2008, 11:56:47 ) *
Jesli dajesz chmod za pomoca mkdir() to przez nim ustaw umask() na 0 bo w przeciwnym razie chmod moze w ogole nie byc rowny 777


tworzenie wygląda tak

  1. <?php
  2. umask(0);
  3. if(mkdir('tmpfiles/'.$folderName,777))    //było różnie w apostrofach, bez z zerem na początku, sprawdzałem co się da
  4. //tutaj w przypadku utworzenia robi się to co ma robić
  5. ?>


usuwanie tak jak w pierwszym poście

ale mimo to rmdir nie działa - nie wiem dalej czemu

sprawdzałem to na dwóch komputerach (jeden i drugi to xampp na windowsie) i ani na jednym ani na drugim nie działa rmdir

myślałem, że może coś "trzyma" katalog - że nie da się go usunąć, pozamykałem wszystko co się dało i dalej rmdir nie działa
marcio
Tak jak mowilem nie znam tego iteratora wiec moze spruboj uzyc mojej funkcji:
  1. <?php
  2. function masowe_usuwanie($dir) {
  3.  
  4.      $k = $dir;
  5.      $kat = @opendir($k);
  6.      $ok = true;
  7.  
  8.      while($plik = @readdir($kat)) {
  9.        
  10.      $pplik = $k.'/'.$plik;
  11.  
  12.      if(is_file($pplik)) {
  13.  
  14.      if(unlink($pplik) !== true) {
  15.      
  16.      $ok = false;
  17.      break;
  18.      }
  19.   }
  20. }
  21.      if($ok == false) return false;
  22.    
  23.      else return true;
  24.    
  25. closedir($kat);
  26. }
  27.  
  28. $kat = '';
  29. if(masowe_usuwanie($kat)) rmdir($kat);
  30. ?>
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.