Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z dostępem do pliku
Forum PHP.pl > Forum > Przedszkole
b4rt3kk
Witam, otóż próba usunięcia pliku, który dodaje, zwraca błąd:

Warning: unlink(): Permission denied in c:\...\funkcje.php on line 49

Nie jest to spowodowane brakiem uprawnień dostępu do pliku, bo ustawiłem 666, inne pliki usuwa bez problemu (dla testu tworzyłem sam pliki w folderze).

Po krótce jest to system przesyłania obrazków na serwer, wygląda na to jakby plik był dalej przetwarzany, dlatego nie może zostać usunięty, a nie jest nawet otwierany do obróbki, jedynie kopiowany na serwer.

  1. move_uploaded_file($_FILES['userfile']['tmp_name'], "wyslane/".$nazwa_pliku);
  2. $sciezka_miniaturki="wyslane/".$nazwa_pliku;
  3. $_SESSION['dodane_zdjecia'][]="$sciezka_miniaturki";


Usuwanie wygląda tak:

  1. $usun=$_POST['zdjecie'];
  2. for ($j=0; $j<sizeof($usun); $j++) {
  3. for($i=0; $i<sizeof($tablica); $i++) {
  4. if ($usun[$j]==$tablica[$i]) { $tablica[$i]=$_SESSION['dodane_zdjecia'][$i]=""; unlink("$tablica[$i]"); }
  5. }
  6. }


Bardzo proszę o pomoc.
MateuszS
Co zawiera tablica $tablica? Przed tym kodem usuwania. Gdzie ją zdeklarowałeś?
b4rt3kk
Cytat(MateuszS @ 6.09.2010, 21:14:34 ) *
Co zawiera tablica $tablica? Przed tym kodem usuwania. Gdzie ją zdeklarowałeś?


Tablica zawiera ścieżki do plików uprzednio przesłanych na serwer przez formularz, czyli np. wyslane/obrazek.jpg.
everth
Przed unlink daj
  1. var_dump($tablica[$i])

I jeszcze jedno - jaki chmod ma folder w którym są zdjęcia?
b4rt3kk
Problem był prozaiczny, zmienna najpierw została wyzerowana a dopiero później chciałem usuwać plik, czyli unlink w praktyce był wywołany z argumentem 0. Przestawienie kolejności pomogło. var_dump mnie naprowadziłom dzięki wielkie. smile.gif

Było:
  1. $usun=$_POST['zdjecie'];
  2. for ($j=0; $j<sizeof($usun); $j++) {
  3. for($i=0; $i<sizeof($tablica); $i++) {
  4. if ($usun[$j]==$tablica[$i]) { $tablica[$i]=$_SESSION['dodane_zdjecia'][$i]=""; unlink("$tablica[$i]"); }
  5. }
  6. }


a powinno być:

  1. $usun=$_POST['zdjecie'];
  2. for ($j=0; $j<sizeof($usun); $j++) {
  3. for($i=0; $i<sizeof($tablica); $i++) {
  4. if ($usun[$j]==$tablica[$i]) { unlink("$tablica[$i]"); $tablica[$i]=$_SESSION['dodane_zdjecia'][$i]=""; }
  5. }
  6. }


Dziękuję za pomoc. winksmiley.jpg
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.