Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Problem z przesyłaniem plików przy uploadzie
Forum PHP.pl > Forum > Przedszkole
progresmedia
Witam,

od razu mówię że przekopałem google, znalazłem dużo podobnych tematów, lecz żadne rozwiązanie nie było skuteczne w moim przypadku, więc zwracam się z prośbą o pomoc do Was smile.gif

Mam skrypt do uploadu plików na serwer (dla potrzeb forum uprościłem go trochę) który wygląda mniej więcej tak:

Część HTML:
Kod
<form method="post" enctype="multipart/form-data" name="formularz">
<input type="file" name="nowa" id="nowa" />

<input type="submit" name="ok" value="Dodaj fotkę" />
</form>


Część PHP:
Kod
if (is_uploaded_file($_FILES['nowa']['tmp_name'])) {
      /* kod z uploadem */
}


Problem polega na tym, że część po if'ie wogóle się nie wywołuje (?). Tak jakby plik wogóle nie został wysłany (a jest smile.gif ).

Sprawdziłem całą tablicę $_FILES za pomocą print_r() i var_dump() i za każdym razem wyskakuje mi pusty wynik:
print_r($_FILES): Array ( )
var_dump($_FILES): array(0) { }

Czy ktoś może mi pomóc - czym taka sytuacja może być spowodowana? Na home.pl ten skrypt normalnie działa, teraz przerzuciłem na czeski serwer i przestało działać ;/

Będę wdzięczny za pomoc.
Pawel_W
a na pewno wysyła ci te dane do odpowiedniego pliku?

nie dodałeś action do formularza
progresmedia
Kod php jest w tym samym pliku więc, skoro nie ma action to i tak ten sam plik się ładuje.

Skrypt jest dobry, działał mi na innym serwerze, myślę że bardziej chodzi tu o jakąś konfigurację php tylko na tym aż tak bardzo się nie znam.
mip
Jak duże pliki przesyłasz?
sprawdź ustawienia
upload_max_filesize i post_max_size
progresmedia
upload_max_filesize 64M
post_max_size 64M

Pliki które przesyłam mają od 500 KB do 1 MB, także to też chyba nie jest źródło problemu.

Safe Mode wyłączony - jeśli ma to jakieś znaczenie winksmiley.jpg

Zauważyłem za to w phpinfo() to:
upload_tmp_dir - no value

Może to jest przyczyna?
erix
Może byście tak zaglądali czasem do manuala...? :/
Cytat
The temporary directory used for storing files when doing file upload. Must be writable by whatever user PHP is running as. If not specified PHP will use the system's default.


Daj var_dump" title="Zobacz w manualu PHP" target="_manual na $_FILES i pokaż, co zwraca.
progresmedia
Właśnie o to chodzi, że var_dump($_FILES) zwraca mi pustą tablicę:

array(0) { }
erix
Masz włączone raportowanie błędów? Skrypt ma uprawnienia do zapisu w katalogu tymczasowym? To Twój serwer, czy jakiś hosting?
progresmedia
Mam włączone raportowanie błędów, jedyne co pokazuje to notice:
Kod
Notice[/b]:  Undefined index:  nowa in [b]/*******************/fotki.php[/b] on line [b]4[/b][b]


Co do uprawnień to nie jestem dokładnie pewien, administrator wyłączył Safe Mode więc powinien chyba mieć prawda? A poza tym jakby nie miał to powinien chyba się pokazać błąd Permission Denied.

To jest hosting, do tego czeski i strasznie ciężko dogadać się z BOK'iem bo tak średnio znają angielski winksmiley.jpg
erix
Cytat
to powinien chyba się pokazać błąd Permission Denied.

Niekoniecznie, tyle sytuacji, ile konfiguracji. [;

A phpinfo" title="Zobacz w manualu PHP" target="_manual? is_writable" title="Zobacz w manualu PHP" target="_manual zwraca true dla katalogu tymczasowego? Po zmianie katalogu na znajdujący się w domowym też to samo?
progresmedia
Wcześniej już podawałem co pisze mi phpinfo, wszystko wygląda ok. Nie mogę sprawdzić is_writible() katalogu tymczasowego bo nie wiem gdzie on jest winksmiley.jpg (w phpinfo() zarówno wartość lokalna jak i globalna to 'no value').

Zastosowałem
Kod
ini_set('upload_tmp_dir', '/***********/tmp/');

i ten katalog na pewno ma możliwość zapisu (chmod 777) no ale problem nie zniknął, dalej jest to samo :/
erix
Cytat
Nie mogę sprawdzić is_writible() katalogu tymczasowego bo nie wiem gdzie on jest (w phpinfo() zarówno wartość lokalna jak i globalna to 'no value').

W Unixie jest to po prostu /tmp.

A tak BTW, serwer masz swój? Bo podejrzewam, że problem tkwi raczej w samym interpreterze...
zeulus
Sprawdź w phpinfo(), czy w ogóle masz włączony upload plików (file_uploads), druga opcja jest taka, że katalog tymczasowy jest zapełniony do cna plikami i nie ma miejsca na nowe.
progresmedia
file_uploads: On

Kod
is_writable("/tmp")


zwraca wartość 1

Serwer nie jest mój, tak jak pisałem wcześniej jest to czeski serwer (przez co mam utrudniony kontakt z obsługą).

Info o serwerze:
Cytat
Linux atlantis.vshosting.cz 2.6.26-bpo.1-686-bigmem #1 SMP Tue Sep 2 18:42:50 UTC 2008 i686
Build Date Oct 2 2008 08:13:20
Server API Apache 2.0 Handler
PHP API 20041225
PHP Extension 20060613


Dla mnie wygląda to tak, że plik wogóle nie przesyła się na serwer, pytanie tylko dlaczego?
erix
IMHO najlepiej by było do administracji napisać, bo sprawa jest co najmniej dziwna...
progresmedia
Pisałem już, administrator odpisał mi coś takiego:
Cytat
Datum: 7.7.2009 15:31
Hi,

when creating folders and files it is necessary to set permissions via the PHP function chmod to 777

Permissions corrected.

Please send your requirements in the Czech language


Odpisałem, że chmody są ustawione i nie w tym tkwi problem - od tego czasu zero odzewu :/

Problem rozwiązany:

Okazało się że błąd był spowodowany tym, że nie było podpiętej domeny, a strona była odpalana przez URL panelu Plesk.

Podziękowania dla erixa za pomoc smile.gif
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.