ugrás a tartalomhoz

File feltöltés: hiba a nulladik sorban

toro · 2005. Okt. 27. (Cs), 10.19
Egy file feltöltő építésével/tesztelésével múlatom az időt - egyelőre localhoston.
8 megara van konfigurálva a PHP 5, apache 2 van fenn.

A gondom az, hogy ha feltöltök egy negyméretű filet, akkor
Warning: POST Content-Length of 54414718 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
hibát kapok. Ebben az a csodás, hogy a hiba azelőtt keletkezik, hogy a php script futni kezdene, igy semmi sincsen rá hatással, es a kimenet megjelenése miatt már az első sorban a session_start() is köhög, és a tervezett hibakezelő futtása is csak a hibaüzenet kiírása után kezdődik.
Ugyanakkor a dologra a form első sorában lerakott <input type="hidden" name="MAX_FILE_SIZE" value="2000000"> sincsen semmilyen hatással.

PHP script utolsó sorára mutató hibát már rutinból kezelem, de a nulladik sorral az Unkonwn fileban mit lehet tenni?

Ha már kérdés, akkor legyen még egy: van-e racionalis javallata annak, hogy a feltöltött filet ne fileként egy mapppában, hanem karaktersorozatként egy adatbázisban tároljuk? (úgy érzem nincs)
 
1

Felöltési méret

Poetro · 2005. Okt. 27. (Cs), 12.23
A php.ini-ben 2 tényezőtől függ a feltölthető maximális fájlméret:
upload_max_filesize = 8M
post_max_size = 8M
Ezek a post_max_size-nak értelemszerűen nagyobbnak vagy egyenlőnek kell lennie a upload_max_size-nál.
--------
Poetro
2

<Nincs cím>

toro · 2005. Okt. 27. (Cs), 12.42
Ez áll, a phpmyadmin miatt ezt már régebben átkonfiguráltam 8 megára.

A hibaüzenetből látszik, hogy 54 megát(!) nem vitt át a cucc. A kinti serveren működik a script, bár azt 54 megával nem bombáztam meg :) ott az is_uploaded_file() else ágára adódik át a vezérlés.

Engem igazán a 0. sorban generált hiba izgat. Konfig hiba?
6

Lefelé korlátozás

Poetro · 2005. Okt. 27. (Cs), 19.29
A html-ben legfeljebb lefelé korlátozhatod a feltölthető maximális méretet. Azaz még mielőtt a scripted megkapta volna a vezérlést, a php hibát érzékelt, ami miatt nem tudta a kérés végrehajtani. Ezt jelöli 0. sorral.
Hogy 54 megát tölthess fel, a korlátot is fel kell emelned a php.ini-ben 54 Mb-ra.
--------
Poetro
7

<Nincs cím>

toro · 2005. Okt. 27. (Cs), 20.59
Oh, jaj! dehogy akarok! csak teszteltem, mi van akkor, ha tul nagy a file.

Ha valami szamomra uj dogot csinalok, eloszor korulnezek, aztan megcsinalom az olvasottak es a korabbi tapasztalataim alapjan, vegul pedig amennyire tudom korbejarom azt, amit igy letrehoztam.
Na, ennek az utolso fazisnak volt a resze, hogy raengedtem egy meretes file-t, hogy mit csinal, ha tenyleg igenybe van veve.
Persze mindenre szamitottam csak erre nem.

De most mar minden szep es jo :)
8

hibakezelés

Balogh Tibor · 2005. Okt. 28. (P), 16.37
Talán még ez segíthet a hibakezelésben:

function post_status(){
	if ($_SERVER['REQUEST_METHOD'] == 'POST')
		return empty($_POST)? POST_ERR:POST_OK;
	else
		return POST_NOT;
}
A POST_* neveket neked kell definiálni.
3

2. kerdes

Anonymous · 2005. Okt. 27. (Cs), 12.53
Elonye: nem kell figyelni a fajlrendszer es adatbazis szinkronizalasara, jogosultsagok jobban kezelhetok, tranzakciokezeles. Hatranya ezerszer ennyi. Szerintem :)
4

ne írja ki a hibát

Hojtsy Gábor · 2005. Okt. 27. (Cs), 15.17
Egy production szerveren semmiképpen sem mehetsz úgy, hogy kiírod a hibákat. Egy fejlesztő szerveren is könnyen megteheted, hogy egy fájlba naplózol, és azt figyeled, hogy ott felbukkant-e hiba. A PHP adhat hibaüzenetet azelőtt, hogy a szkripted fut, ennek kiírását úgy tudod elkerülni, hogy (php.ini):
display_errors = off
log_errors = on
error_log = napló_fájl_neve
5

<Nincs cím>

Anonymous · 2005. Okt. 27. (Cs), 17.46
köszi!