Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Zmiana nazwy katalogu
230005
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Przy zmianie nazwy katalogu wszystkie pliki i podkatalogi kopiują się poprawnie za wyjątkiem jednego. Rzeczony podkatalog jest tworzony w nowym pod swoją nazwą, ale jako plik bez rozszerzenia.
  1.  
  2. public function renameDir($oldName, $newName)
  3. {
  4. $alt_umask = umask(0);
  5. mkdir($newName, 0777);
  6. umask($alt_umask);
  7.  
  8. $old = opendir($oldName);
  9.  
  10. while(false !== ($file = readdir($old)))
  11. {
  12. if($file != "." && $file != "..")
  13. {
  14. if(is_dir($file))
  15. {
  16. mkdir($newName.$file, 0777);
  17. $nextDir = opendir($oldName.$file);
  18.  
  19. while(false !== ($files = readdir($nextDir)))
  20. {
  21. if($files != "." && $files != "..")
  22. {
  23. copy($oldName.$file.'/'.$files, $newName.$file.'/'.$files);
  24. chmod($newName.$file.'/'.$files, 0777);
  25. unlink($oldName.$file.'/'.$files);
  26. }
  27. }
  28.  
  29. rmdir($oldName.$file);
  30. closedir($nextDir);
  31. }
  32. else
  33. {
  34. copy($oldName.$file, $newName.$file);
  35. chmod($newName.$file, 0777);
  36. unlink($oldName.$file);
  37. }
  38. }
  39. }
  40.  
  41. closedir($old);
  42. rmdir($oldName);
  43. }
  44.  



Ten post edytował 230005 28.08.2009, 09:48:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jeśli zmieniasz tylko nazwę katalogu (i nie zmieniasz ścieżki) to czemu nie użyjesz prostego rename wbudowanego w php?
Inna sprawa, że to niekoniecznie musi być przecież katalog. Zerknij sobie jaki "typ" zwraca Ci ów niepokorny (IMG:style_emoticons/default/winksmiley.jpg) Może się okazać, że jest to dowiązanie (link symboliczny) i stąd jest problem, bo robisz tylko sprawdzenie czy coś jest katalogiem. Jeśli nie jest to traktujesz wszystko jako plik, choć nim de facto być nie musi. Lepiej też jeśli byś przerobił ten skrypt na rekurencyjny, bo inaczej nie wejdziesz głębiej niż na 1 poziom, a przez to podkatalogi w kolejnych zagłębieniach będą puste. Po prostu wywołaj przy katalogu odwołanie do funkcji o tej samej nazwie.
Go to the top of the page
+Quote Post
230005
post
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Rename (IMG:style_emoticons/default/sciana.gif) . Wcześniej chciałem użyć tej funkcji, ale sypała błędami. Teraz dzięki twojej sugestii zajrzałem raz jeszcze do manuala i mnie oświeciło. Wcześniej w stringach $oldName i $newName na końcu dawałem slashe, a w opisie funkcji stoi jak byk, że na końcu nie ma być slasha (IMG:style_emoticons/default/tongue.gif) . Dzięki!!!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 16.09.2025 - 02:21