Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] rmdir, Permission denied
Forum PHP.pl > Forum > PHP
damian_m
Witam, mam problem przy użyciu funkcji rmdir w moim skrypcie. Po każdej próbie usunięcia folderu wyskakuje błąd:
"Warning: rmdir(images_items/subtitles/asas): Permission denied in c:\usr\krasnal\www\dig\titles_usun.php on line 78".
Nie wiem co mam z tym począć, poszperałem trochę w necie i dowiedziałem się, że problemem może być to, że folder jest niepusty (jest pusty na 100% - 0 bajtów, z resztą z nowo utworzonym ręcznie folderem też jest to samo) albo, że chmod jest źle ustawiony (ustawiłem na 777).

Oto kawałek kodu (uproszczonego):
  1. <?php
  2. $zm = "folder" // nazwa folderu do usuniecia
  3. $dir = opendir("images_items/subtitles/$zm");    // opróżnianie folderu poczatek
  4.       $adres = "images_items/subtitles/$zm";  
  5.       while ( ($file2 = readdir($dir)) == true) {
  6.       if ($file2 == "." || $file2 == "..") continue;
  7.       unlink("images_items/subtitles/$zm/$file2");
  8.       }       // oproznianie folderu koniec
  9.  
  10.       chmod("images_items/subtitles/$zm",0777);  // ustawiam chmod na 777
  11.       rmdir("images_items/subtitles/$zm"); // usuwam (przynajmniej probuje...)
  12. ?>


Nazwa folderu do skryptu pobierana jest z url'a ($_GET). Na poprzedniej podstronie najpierw wyświetlana jest zawartość folderu (konkretnie grafika) i dopiero potem jest możliwość usunięcia folderu. Wątpię, żeby to miało jakiś związek z problemem ale są to moje początki w PHP więc kto wie... Z góry dzięki za pomoc i pozdrawiam.
lord_t
Spróbuj zmienić chmod (np. na 777) katalogu nadrzędnego do tego, który chcesz usunąć.
damian_m
A więc tak: w katalogu głównym znajduje się mój plik ze skryptem do usuwania, a w images_titles/subtitles/ znajdują się foldery do usunięcia. Próbowałem ustawić chmody (777) kolejno dla images_titles, subtitles oraz dla folderu, który aktualnie chce usunąć. Nic to nie dało. Próbowałem kolejności odwrotnej albo bez ustawiania chmodow dla folderu images_items i kilku innych kombinacji... niestety nic to nie dało. Potem przerobiłem skrypt na taki, żeby usuwał wybrane foldery z katalogu głównego no i okazało się, że skrypt działa. Wpadłem wtedy na pomysł, żeby przenieść plik ze skryptem do katalogu, z którego chce usuwać foldery, okazało się jednak, że nie działa (dalej jest 'Permission denied'). Dzięki za trop z tymi chmodami do katalogów nadrzędnych lord_t, będę próbował kombinować w tą stronę...
lord_t
A czy po przeniesieniu tego skryptu do katalogu subtitles, nie stracił on przypadkiem swojego chmoda?
damian_m
Jeśli o to ci chodzi to ustawiłem 0777 dla niego w pliku, w którym wybiera się folder do usunięcia. Tak więc przed każdą próbą usunięcia jakiegokolwiek folderu nadawany jest dla tego pliku chmod 777:

  1. <?php
  2. chmod("images_items/subtitles/delete.php", 0777);
  3. ?>


Nie wiem czy dokładnie o to Ci chodziło ale tak czy siak dalej nie rozwiązało to problemu.
lord_t
A ten skrypt w którym jest w/w linijka ma chmod 0777?
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.