Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Operacje na katalogach
Forum PHP.pl > Forum > PHP
xajart
Witam i przechodzę do sedna.

Mam pewien skrypcik który ma za zadanie tworzyć odpowiedni folder (co robi bez zarzutu) jak również możliwość zmiany jego nazwy i kasowania go (wraz z zawartością), te dwa pozostałe elementy mi nie działąją i nie mogę wyczaić gdzie mam błąd.

zmianę nazwy wykonuję w taki sposób: 
Kod
$sciezka_old = $url.'/'.$site_old[$i];
                 $sciezka_new = $url.'/'.$site[$i];
                 rename($sciezka_old, $sciezka_new);




zmienna tablicowa tam występuje bo robione jest to w pętli (i akutalizować ma kilka folderów) - niestety nie wykonuje się ten skrypt (chociaż ścieżki identyczne używam przy tworzeniu folderów i działa). 

II. Druga sprawa

to kasowanie zawartości całego katalogu, próbowałem w tym własnych sił, ale mi nie wychodziło, probowałem skorzystać z gotowych rozwiązań ale mi nie zadziałały. Przedstawiam tu jedno z nich.
Kod
$sciezka = $url.'/'.$site[$i];
$katalogglowny = $sciezka;
$katalog[]=$katalogglowny; 
for ($x=0; $x<count($katalog); $x++) 
 { 
 $dir=opendir("$katalog[$x]"); 
 while($znalezione=readdir($dir)) 
  { 
  if(($znalezione!=".")&&($znalezione!="..")) 
   { 
   if (is_dir("$katalog[$x]/$znalezione")=="true") $katalog[]="$katalog[$x]/$znalezione"; 
   else $plik[]="$katalog[$x]/$znalezione"; 
   } 
  } 
 closedir($dir); 
 } 
$katalog = array_reverse($katalog); 
for ($x=0; $x<count($plik); $x++) unlink ("$plik[$x]"); 
for ($x=0; $x<count($katalog); $x++) rmdir  ("$katalog[$x]"); 
echo 'usunięto:<br/>katalogow: '.count($katalog).'<br/>plikow: '.count($plik).'<br/>'; 

Czekam na propozycje rozwiązania tego problemu.
erix
Cytat
to kasowanie zawartości całego katalogu, próbowałem w tym własnych sił, ale mi nie wychodziło, probowałem skorzystać z gotowych rozwiązań ale mi nie zadziałały. Przedstawiam tu jedno z nich.

A nie prościej użyć exec" title="Zobacz w manualu PHP" target="_manual('rm -rf katalog')?

Cytat
zmienna tablicowa tam występuje bo robione jest to w pętli (i akutalizować ma kilka folderów) - niestety nie wykonuje się ten skrypt (chociaż ścieżki identyczne używam przy tworzeniu folderów i działa).

Nie wiem, jak u Ciebie wyglądają ścieżki, ale z tego, co pamiętam, to katalog docelowy musi istnieć.
bartg
Co do exec to raczej nie, bo jak wiadomo na większości serwerach(jak nie wszystkich) jest to wyłączone z wyjątkiem dedyków gdy sam sobie włączysz smile.gif

Co do problemu, to jakie masz błedy?
erix
Cytat
jest to wyłączone z wyjątkiem dedyków gdy sam sobie włączysz

Spierałbym się, coraz więcej hostingów nie blokuje.

Cytat
to kasowanie zawartości całego katalogu, próbowałem w tym własnych sił, ale mi nie wychodziło, probowałem skorzystać z gotowych rozwiązań ale mi nie zadziałały. Przedstawiam tu jedno z nich.

PS. Kasujesz wszystkie pliki/katalogi z usuwanego folderu?
xajart
Powyższy skrypt, co wrzuciłem ma kasować wszystkie pliki i katalogi z usuwanego folderu ale jakoś nie zauważyłem by to robił. Wieć coś z tym skryptem musi być chyba nie tak. Dzisiaj do tego puki co głowy już nie mam sad.gif

co do ścieżki to jest wszędzie w identyczny sposób definiowana więc raczej musi być poprawna skoro zakładanie struktury katalogów i podkatalogów działa, a wykorzystuje do tego mkdir(), podając mu ścieżke i chmod. 


Chyba ze problem tkwi z tym że obecnie to testuje na intrancecie. Foldery zakłada, ale nie zmienia im nazwy ani ich nie usuwa. Wyżej jest podane jak chciałem zmieniać nazwe i usuwać.

PS. co do skryptu usuwania to tak jak by wogóle się nie wykonywał, bo nie pojawiają mi się żadne komunikaty. wiec wnioskuje że zatrzymuje się na etapie pierwszej pętli którą pomija. Poza tym najdziewniejsze w tym skrypcie wydaje mi się zmienna tablicowa $katalog[] nie wiem co ona niby ma zawierać - bo skoro przypisuje się do niej ścieżke która jest ciągiem znaków, więc jest tablicą ale czego ? jednego elementu, to nie ma sensu.
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.