Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] removedir
Forum PHP.pl > Forum > PHP
Dreen
Stworzylem funkcje do usuwania folderow na uzytek przegladarki, jedna nie dziala tak jak powinna.

chodzi o usuwanie pustych folderow, kiedy bowiem uzyje poprostu komendy rmdir, a folder jest pusty, usunie sie bez problemu, ale kiedy juz wloze to do funkcji - wyskakuje blad. Obecnie funkcja dziala tak:
[php:1:deba08cbc6]<?php
function removedir($thedir) // deklaracja funkcji - $thedir to cel do usuniecia
{
$tablicak = spisz_dira("all", $thedir."/"); // ta funkcja ideksuje pliki wewnatrz katalogu i dziala dobrze, mniejsza o to jak
$fcount = count($tablicak);
if ($fcount == 0) // teraz sprawdzam czy katalog jest pusty, jesli tak, no to chcialbym go usunac
{
rmdir($thedir); // tu wyskakuje blad w przypadku pustego folderu
}
else // jesli folder nie jest pusty, no to trza go wyczyscic i potem usunac...
{
foreach ($tablicak as $key => $value) // dla kazdej pozycji katalogu...
{
$pozycja = $thedir."/".$value;
if (!is_dir($pozycja))
unlink ($pozycja); // ...usun pozycje jesli jest ona plikiem,...
elseif (is_dir($pozycja))
removedir($pozycja); //...lub wywolaj dla niej funcje jeszcze raz, jesli jest folderem
}
rmdir($thedir); // po skonczonym czyszczeniu usun katalog, tu rowniez wyskakuje blad, jesli w folderze znajdowaly sie pliki...
}
}
?>[/php:1:deba08cbc6]
probowalem zamienic rmdir na echo zeby sprawdzic jaka nazwa sie genuruje, ale generuje sie dobra nazwa. Zreszta, zeby sie upewnic wstawilem rmdr("poprawnanazwa"); w miejscu, gdzie normalnie wywoluje funkcje, jesli naplynelo zadanie usuniecia katalogu...
Generowany blad, to tak jak wczesniej Brak Dostepu (Permission Denied), wiec nazwa tak czy owak jest dobra bo byloby Not Such File Or Dir.

Jesli ktos ma jakis pomysl, to bardzo prosze o pomoc
Kinool
Cytat
Permission Denied


A uprawnienia katalagu jakie sa?? twojego usera czy usera na jakim jest uruchomiony Apache questionmark.gif

mozliwe ze to wina zlych uprawnien sprobuj zrobic kataog przez skrypt i wyedy go usunac.
FiDO
Na bank jest to wina uprawnien.
Prawdopodobnie katalog utworzyles przez ftp'a lub shell'a, czyli jego wlascicielem jest Twoje konto, a probujesz go skasowac przez konto apache'a, co jest niemozliwe przy standardowych prawach.
Dreen
Wlasnie ze nie.


Wszystko testuje u siebie na kompie (najnowsza wersja phpdev) i cos takiego mi wyskakuje.

Probowalem przed kazdym rmdir($thedir) dac chmod($thedir, 0777) ale to nie podzialalo.
Zreszta wogole taki przypadek jest wykluczony, gdyz w momencie kiedy zamiast wywolac funkcje, dam poprostu rmdir() (i oczywiscie upewnie sie ze folder jest pusty) to folder zostanie usuniety poprawnie.

Problem pozostaje wiec nadal nierozwiazany, a funkcja jest raczej wazna dla przegladarki, bo komu chcialoby sie czyscic foder manualnie...
FiDO
W takim razie nie usuwa Ci poprawnie plikow w tym katalogu i/lub podkatalogach.
Dreen
Usuwa, sprawdzalem wyczyscil ladnie folder w ktorym byly tylko pliki, poczym zwrocil blad Permission Denied.

Problem nadal aktualny
FiDO
Takie glupie pytanie... nie masz czasem w Exploratorze Windows, ew. Total Commanderze czy innym podobnym otwartego tego katalogu, ktory chcesz usunac ?
Dreen
Faktycznie glupie... oczywiscie ze nie.

Jesli ktos jeszcze nie stracil do mnie cierpliwoscii chcialby mi pomoc, to za powiadomienia mnie o tym na PW moge mu wyslac pelny source przegladarki rarem, zeby mial jasny obraz sytuacji.
FiDO
Aha.. na marginesie.. zajrzyj do manuala, chyba przy opisie funkcji [manual:7f4cd4c685]rmdir[/manual:7f4cd4c685] w komentarzach jest podanych kilka przykladowych kodow usuwajacych rekurencyjnie dany podkatalog z zawartoscia.
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.