Dreen
25.05.2004, 10:51:59
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
25.05.2004, 11:03:06
Cytat
Permission Denied
A uprawnienia katalagu jakie sa?? twojego usera czy usera na jakim jest uruchomiony Apache
mozliwe ze to wina zlych uprawnien sprobuj zrobic kataog przez skrypt i wyedy go usunac.
FiDO
25.05.2004, 12:35:40
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
25.05.2004, 18:43:20
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
25.05.2004, 19:36:29
W takim razie nie usuwa Ci poprawnie plikow w tym katalogu i/lub podkatalogach.
Dreen
25.05.2004, 20:00:29
Usuwa, sprawdzalem wyczyscil ladnie folder w ktorym byly tylko pliki, poczym zwrocil blad Permission Denied.
Problem nadal aktualny
FiDO
25.05.2004, 21:16:55
Takie glupie pytanie... nie masz czasem w Exploratorze Windows, ew. Total Commanderze czy innym podobnym otwartego tego katalogu, ktory chcesz usunac ?
Dreen
25.05.2004, 22:52:51
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
25.05.2004, 23:16:19
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.