Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/WINDOWS] Usuwanie katalogów, czemu rmdir nie działa
juzwa
post 18.10.2008, 21:47:26
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował juzwa 19.10.2008, 07:15:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
marcio
post 18.10.2008, 22:02:32
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
juzwa
post 19.10.2008, 07:09:15
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
marcio
post 19.10.2008, 10:56:47
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
juzwa
post 19.10.2008, 17:54:12
Post #5





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował juzwa 19.10.2008, 17:55:09
Go to the top of the page
+Quote Post
marcio
post 19.10.2008, 18:41:19
Post #6





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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. ?>


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:52