Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Usuwanie pliku oraz uprawnienia
Forum PHP.pl > Forum > Przedszkole
kkuubbaa88
witam

na swojej aplikacji tworze folder:
  1. if (!is_dir('pliki/folder')){
  2. mkdir ('pliki/folder', 0777);
  3. }

do niego uploadowane są pliki jpg oraz wstepnie obrabiane:
  1. if(move_uploaded_file($_FILES['plik']['tmp_name'],'pliki/folder/plik.jpg')){
  2. przeskaluj();
  3. obrob():
  4. }

następnie chcę usunąć plik z folderu zwykłą funkcją unlink:
  1. unlink('pliki/folder/plik.jpg');

niestety w logach mam problem:

Permission denied

co jest trochę dziwne... dlaczego tak się dzieje ? jak to naprawić ?
strife
Być może plik, który chcesz usunąć nie posiada odpowiednich uprawnień do tej operacji. Sprawdź jakie ma uprawnienia ten plik.

A jaki błąd pokazuje PHP jak próbujesz usunąć ten plik?
user767
może file_exists($nazwa)?
kkuubbaa88
nadałem po uploadzie zdjęciu prawa 777, ale to i tak nie pomogło w logach i w php jest to samo. w którym pliku i lini się czepia oraz 'Permission denied'
strife
Cytat(user767 @ 5.12.2010, 14:51:50 ) *
może file_exists($nazwa)?

file_exists sprawdza czy plik / katalog istnieje w danej lokalizacji, co to ma niby wspólnego z brakiem uprawnień do usunięcia pliku? Ja rozumiem, że chciałeś pomóc i masz dobre intencje, ale następnym razem wstrzymaj się z odpowiedzią jak nie masz co do niej pewności.

Cytat
nadałem po uploadzie zdjęciu prawa 777, ale to i tak nie pomogło w logach i w php jest to samo. w którym pliku i lini się czepia oraz 'Permission denied'

No tak, ale wklej dokładnie błąd jaki Ci zwraca parser przy próbie usunięcia pliku. O to mi konkretnie chodzi.
kkuubbaa88
dokładnie błąd wygląda tak:

Warning: unlink(../pliki/folder/unlink.jpg) [function.unlink]: Permission denied in C:\wamp\www\var\www\strona\upload\do_2.php on line 178

czyli nic ciekawego nie daje...

co dziwne można robić upload kilku plików i za którymś razem dopiero wyskoczy takowy błąd...

po wykluczaniu przyczyn metodą prób i błędów doszedłem do tego, że funkcja unlink działa za każdym razem gdy nie będę przetwarzał wysłanego obrazka. teraz tylko pozostaje pytanie co takiego robią moje funkcje, że ów plik nie chce się później usunąć.

gdy używam ich pojedynczo to wszystko działa bez problemów. jeżeli wywołam jedną po drugiej przesłany obrazek nie będzie mógł się usunąć.

  1. function zrob_miniaturke($plik, $nowa_sz, $nowa_w, $miniaturka){
  2. $info = @getimagesize($plik);
  3. $wytnij = false;
  4. switch ($info['mime'])
  5. {
  6. case "image/gif":
  7. $plik = imagecreatefromgif($plik);
  8. break;
  9. case "image/jpeg":
  10. $plik = imagecreatefromjpeg($plik);
  11. break;
  12. case "image/png":
  13. $plik = imagecreatefrompng($plik);
  14. break;
  15. }
  16.  
  17. $plik_sz = imageSX($plik);
  18. $plik_w = imageSY($plik);
  19.  
  20. if ($plik_sz > $plik_w)
  21. {
  22. if (($plik_w/$plik_sz) == '0.75'){
  23. $miniaturka_sz=$nowa_sz;
  24. $miniaturka_w=$nowa_w;
  25. }else{
  26. $miniaturka_sz=$nowa_w*($plik_sz/$plik_w);
  27. $miniaturka_w=$nowa_w;
  28. $wytnij = true;
  29. }
  30. }
  31.  
  32. if ($plik_sz < $plik_w)
  33. {
  34. $miniaturka_sz=$nowa_sz;
  35. $miniaturka_w=$nowa_sz*($plik_w/$plik_sz);
  36. $wytnij = true;
  37. }
  38.  
  39. if ($plik_sz == $plik_w)
  40. {
  41. $miniaturka_sz=$nowa_sz;
  42. $miniaturka_w=$nowa_sz;
  43. $wytnij = true;
  44. }
  45.  
  46. $nowy_plik = ImageCreateTrueColor($nowa_sz, $nowa_w);
  47. if($wytnij){
  48. if ($miniaturka_sz > $nowa_sz){
  49. $zmienna = round((($miniaturka_sz-$nowa_sz)/2)*($plik_sz/$miniaturka_sz));
  50. $zmienna2 = $plik_sz-$zmienna*2;
  51. @imagecopyresampled($nowy_plik, $plik, 0, 0, $zmienna, 0, $nowa_sz, $nowa_w, $zmienna2, $plik_w);
  52. }elseif($miniaturka_w > $nowa_w){
  53. $zmienna = round((($miniaturka_w-$nowa_w)/2)*($plik_w/$miniaturka_w));
  54. $zmienna2 = $plik_w-$zmienna*2;
  55. @imagecopyresampled($nowy_plik, $plik, 0, 0, 0, $zmienna, $nowa_sz, $nowa_w, $plik_sz, $zmienna2);
  56. }
  57. }else{
  58. $zmienna = round((($miniaturka_w-$nowa_w)/2)*($plik_w/$miniaturka_w));
  59. $zmienna2 = $plik_w-$zmienna*2;
  60. @imagecopyresampled($nowy_plik, $plik, 0, 0, 0, $zmienna, $nowa_sz, $nowa_w, $plik_sz, $zmienna2);
  61. }
  62. @imagejpeg($nowy_plik, $miniaturka, '90');
  63. @imagedestroy($plik);
  64. @imagedestroy($nowy_plik);
  65. return TRUE;
  66. }
  67.  
  68.  
  69.  
  70. function przeskaluj_zdjecie($plik, $nowa_sz, $nowa_w, $plik_2){
  71. $info = @getimagesize($plik);
  72. switch ($info['mime'])
  73. {
  74. case "image/gif":
  75. $plik = imagecreatefromgif($plik);
  76. break;
  77. case "image/jpeg":
  78. $plik = imagecreatefromjpeg($plik);
  79. break;
  80. case "image/png":
  81. $plik = imagecreatefrompng($plik);
  82. break;
  83. }
  84.  
  85. $plik_sz = imageSX($plik);
  86. $plik_w = imageSY($plik);
  87.  
  88. if ($plik_sz > $plik_w)
  89. {
  90. if ($plik_sz > $nowa_sz){
  91. $plik_2_sz = $nowa_sz;
  92. $plik_2_w = $nowa_sz*($plik_w/$plik_sz);
  93. }else{
  94. $plik_2_sz = $plik_sz;
  95. $plik_2_w = $plik_w;
  96. }
  97. }
  98.  
  99. if ($plik_sz < $plik_w)
  100. {
  101. if ($plik_sz > $nowa_sz){
  102. $plik_2_sz = $nowa_sz;
  103. $plik_2_w = $nowa_sz*($plik_sz/$plik_w);
  104. }else{
  105. $plik_2_sz = $plik_sz;
  106. $plik_2_w = $plik_w;
  107. }
  108.  
  109. if ($plik_w > $nowa_w){
  110. $plik_2_sz = $nowa_w*($plik_sz/$plik_w);
  111. $plik_2_w = $nowa_w;
  112. }
  113. }
  114.  
  115. if ($plik_sz == $plik_w)
  116. {
  117. $plik_2_sz=$nowa_w;
  118. $plik_2_w=$nowa_w;
  119. }
  120.  
  121. $nowy_plik = ImageCreateTrueColor($plik_2_sz, $plik_2_w);
  122.  
  123. @imagecopyresampled($nowy_plik, $plik, 0, 0, 0, 0, $plik_2_sz, $plik_2_w, $plik_sz, $plik_w);
  124.  
  125. @imagejpeg($nowy_plik, $plik_2, '90');
  126. @imagedestroy($plik);
  127. @imagedestroy($nowy_plik);
  128. return TRUE;
  129. }
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.