Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z uploadem - open_basedir restriction
Forum PHP.pl > Forum > Przedszkole
Age1869
Hej, mam taki oto skrypt (zostawiłem tylko to, co istotne przy szukaniu błędu, żeby było szybciej i łatwiej):

  1. <?php
  2. //tutaj mi generuje unikalną zmienną $name
  3.  
  4. function zapisz_plik()
  5. {
  6.  
  7. if(is_uploaded_file($_FILES['userfile']['tmp_name']))
  8. {
  9. if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $location))
  10. {
  11. echo 'problem: Nie udalo sie skopiowac pliku do katalogu.';
  12. return false;
  13. }
  14. }
  15. else
  16. {
  17. echo 'problem: Mozliwy atak podczas przesylania pliku.';
  18. echo 'Plik nie zostal zapisany.';
  19. return false;
  20. }
  21. return true;
  22. }
  23.  
  24.  
  25. function sprawdz_bledy(){
  26. if ($_FILES['userfile']['error'] > 0){
  27. echo 'problem: ';
  28. switch ($_FILES['userfile']['error']){
  29. // jest wiekszy niz domyslny maksymalny rozmiar,
  30. // podany w pliku konfiguracyjnym
  31. case 1: {echo 'Rozmiar pliku jest zbyt duzy.'; break;}
  32.  
  33. // jest wiekszy niz wartosc pola formularza
  34. // MAX_FILE_SIZE
  35. case 2: {echo 'Rozmiar pliku jest zbyt duzy.'; break;}
  36.  
  37. // plik nie zostal wyslany w calosci
  38. case 3: {echo 'Plik wyslany tylko czesciowo.'; break;}
  39.  
  40. // plik nie zostal wyslany
  41. case 4: {echo 'Nie wyslano zadnego pliku.'; break;}
  42.  
  43. // pozostale bledy
  44. default: {echo 'Wystapil blad podczas wysylania.';
  45. break;}
  46. }
  47. return false;
  48. }
  49. return true;
  50. }
  51.  
  52.  
  53.  
  54. function sprawdz_typ(){
  55. if ($_FILES['userfile']['type'] != 'image/jpeg')
  56. return false;
  57. else
  58. return true;
  59. }
  60.  
  61. $last_id = mysql_query("SELECT * FROM `images` ORDER BY `id` DESC LIMIT 1");
  62. $fetching = mysql_fetch_array($last_id);
  63. $id = $fetching['id'] + 1;
  64.  
  65. if ($tytul){
  66.  
  67. if (!sprawdz_typ()) exit('Bledny typ');
  68. if (!sprawdz_bledy()) exit();
  69.  
  70. $do_bazy = mysql_query("INSERT INTO `images` (`id`, `autor`, `tytul`, `opis`, `adres`) VALUES ('$id', '$autor', '$tytul', '$opis', '$name')") or die(mysql_errno());
  71.  
  72. if (zapisz_plik()) exit('nie zapisano pliku');
  73. }
  74.  
  75. $location = '/home/xxxx/domains/xxxx/public_html/imager/photos/' . $name . '.jpg';
  76. ?>
  77.  
  78. <form enctype="multipart/form-data" method="POST">
  79. <label>Zdjęcie: </label><input name="userfile" type="file" /><br />
  80. <label>Tytuł: </label><input type="text" name="tytul" size="40"><br />
  81. <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> /* maksymalna wielkosc pliku w bajtach */
  82. <label>Opis: </label><TEXTAREA name="opis" rows="10" cols="51" wrap="virtual"></TEXTAREA><br />
  83. <input type="submit" value="Wyslij" />
  84. </form>


Komunikat błędu:
  1. Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File() is not within the allowed path(s): (/home/xxxxxxxxx/:/tmp:/usr/local/lib/php/:/usr/sbin/:/usr/bin/:/usr/local/bin/:/usr/local/sbin/:/bin/:/sbin/) in /home/xxxxxx/domains/xxxxxxxxx/public_html/imager/dodaj.php on line 50


Linia 50 to ta: if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $location))

Dziękuję za pomoc!
Rid
Proszę sprawdzić jakie uprawnienia ma katalog gdzie zapisywane są pliki,odznaczyć opcje tylko do odczytu jeśli jest zaznaczona,i zobaczyć jakie uprawnienia mają same pliki.
Age1869
katalog /photos/ ma oczywiście 777
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.