Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Upload plików
Pjotrek80
post 25.06.2013, 23:19:27
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Mam dziwny problem z uploadem plików.
Jeżeli wgrywam plik o troszkę większym rozmiarze niż MAX_FILE_SIZE (1MB) to prawidłowo zgłasza błąd UPLOAD_ERR_FORM_SIZE.
Jeżeli natomiast wgrywam plik 11MB to nic się nie dzieje. Nic nie wyświetla nawet var_dump tablicy $_FILES, jakby w ogóle nic nie przechodziło przez formularz.
Ktoś spotkał się z czymś takim? Albo może domyślać się o co chodzi?
Go to the top of the page
+Quote Post
widmo_91
post 25.06.2013, 23:43:21
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Umieść w dowolnym miejscu skryptu:

  1. echo ini_get("post_max_size")."\n";


Zapewne wyskoczy wartość 8M, jest to maksymalna wartość jaką możesz wysłać postem więc musisz zmienić w php.ini lub .htaccess tą wartość.
Go to the top of the page
+Quote Post
Pjotrek80
post 25.06.2013, 23:58:51
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(widmo_91 @ 26.06.2013, 00:43:21 ) *
Umieść w dowolnym miejscu skryptu:

  1. echo ini_get("post_max_size")."\n";


Zapewne wyskoczy wartość 8M, jest to maksymalna wartość jaką możesz wysłać postem więc musisz zmienić w php.ini lub .htaccess tą wartość.


Tak pokazuje 8MB ale czy nie powinien wyskoczyć błąd UPLOAD_ERR_INI_SIZE ?
Go to the top of the page
+Quote Post
widmo_91
post 26.06.2013, 00:03:39
Post #4





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


UPLOAD_ERR_INI_SIZE pokazuję czy wrzucony plik przekroczył inną wartość: upload_max_filesize.
Aby wysłać prawidłowo plik post_max_size i upload_max_filesize muszą być większe niż wrzucany plik.
Go to the top of the page
+Quote Post
Pjotrek80
post 26.06.2013, 07:13:35
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(widmo_91 @ 26.06.2013, 01:03:39 ) *
UPLOAD_ERR_INI_SIZE pokazuję czy wrzucony plik przekroczył inną wartość: upload_max_filesize.
Aby wysłać prawidłowo plik post_max_size i upload_max_filesize muszą być większe niż wrzucany plik.

Zgadza się, ale chodzi mi o to, że jak załaduje większy plik to powinie wyskoczyć jeden z błędów (1 - UPLOAD_ERR_INI_SIZE, lub 2- UPLOAD_ERR_FORM_SIZE),
a jak pisałem wcześniej, w przypadku pliku znacznie przekraczającego te ograniczenia nie pokazuje się żaden z wymienionych komunikatów o błędzie.
Go to the top of the page
+Quote Post
widmo_91
post 26.06.2013, 08:24:38
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Cytat
UPLOAD_ERR_INI_SIZE
Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.

UPLOAD_ERR_FORM_SIZE
Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.


1. Twój plik nie przekroczył wartości upload_max_filesize.
2. MAX_FILE_SIZE to zabezpieczenie po stronie SERWERA a post_max_size jest po stronie klienta. Klient czyli Twoja(i innych) przeglądarka zabrania wysyłania większych danych przez formularz, dlatego po przekroczeniu wartości post_max_size nie wyskoczy Ci błąd MAX_FILE_SIZE!
Go to the top of the page
+Quote Post
Pjotrek80
post 26.06.2013, 09:59:22
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(widmo_91 @ 26.06.2013, 09:24:38 ) *
1. Twój plik nie przekroczył wartości upload_max_filesize.
2. MAX_FILE_SIZE to zabezpieczenie po stronie SERWERA a post_max_size jest po stronie klienta. Klient czyli Twoja(i innych) przeglądarka zabrania wysyłania większych danych przez formularz, dlatego po przekroczeniu wartości post_max_size nie wyskoczy Ci błąd MAX_FILE_SIZE!

OK, to jak w takim razie to sprawdzić i wypisać odpowiedni komunikat w takim przypadku?
Go to the top of the page
+Quote Post
widmo_91
post 26.06.2013, 11:12:12
Post #8





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Cytat
If the size of post data is greater than post_max_size, the $_POST and $_FILES superglobals are empty. This can be tracked in various ways, e.g. by passing the $_GET variable to the script processing the data, i.e. <form action="edit.php?processed=1">, and then checking if $_GET['processed'] is set.


Źródło: manual/en/ini.core.php#ini.enable-post-data-reading

Możesz też skorzystać np. ze zmiennej $_SERVER['HTTP_REFERER'], jak napisali w manualu jest kilka sposobów aby to sprawdzić.

Ten post edytował widmo_91 26.06.2013, 11:23:40
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.05.2024 - 17:08