2014-05-15 12 views
11

Beim Versuch, eine PDF-Datei mit 15 MB über einen dafür eingerichteten Admin-Bereich hochzuladen, ist nichts passiert. Es gab keine Erfolgs- oder Fehlermeldung, aber die PDF wurde nicht hochgeladen.PHP post_max_size vs upload_max_filesize, was ist der Unterschied?

Ich dachte dann, dass es ein Problem mit den php.ini Einstellungen sein könnte. Als ich die Datei betrachtete, stellte ich fest, dass die Grenzen auf 8 m gesetzt waren. Was ich annehme, bedeutet 8mb.

post_max_size:http://php.net/post-max-size

; Maximum size of POST data that PHP will accept. 
; Its value may be 0 to disable the limit. It is ignored if POST data reading 
; is disabled through enable_post_data_reading. 
post_max_size = 20M 

upload_max_filesize:http://php.net/upload-max-filesize

; Maximum allowed size for uploaded files. 
upload_max_filesize = 20M 

in den Kommentaren der Suche, scheint es, dass man für die Dateien hochgeladen werden, während der andere direkt an POST bezieht Daten. Was ich verwirrt bin, ist dieses Szenario: Wenn Sie ein Formular haben, das POST ein Bild auf eine andere Seite ist, was zählt das als, upload_max_filesize oder post_max_size? Fällt es unter beides? Hat einer Vorrang? Gibt es Fälle, in denen der eine verwendet wird und nicht der andere?

Edit:

Also, wenn ich eine Form haben, die 3-Datei-Eingänge, die sich alle so dass Dateien 20mb oder kleiner ist, müssten die Einstellungen wie so eingestellt werden:

upload_max_filesize = 20M 
post_max_size = 60M 

Antwort

17

Sie haben Recht. post_max_size ist die maximale Größe für alle POST-Bodydaten. Es spielt keine Rolle, ob Sie JSON oder Ihre DVD-Sammlung POST senden, dies sind alle POST-Bodydaten. Ihr Datei-Upload zählt zu diesem Limit. Sie sollten sich darüber im Klaren sein, dass beim Hochladen mehrerer Dateien die gesamte Dateigröße innerhalb dieses Limits liegen muss.

upload_max_filesize ist eine maximale Größe nur für Dateien, die POSTed sind. Andere Arten von POST-Bodydaten unterliegen nicht dieser Beschränkung.

Kurz gesagt, wenn Sie große Dateien hochladen möchten, müssen Sie beide Grenzen erhöhen.

+0

Ihr Webserver kann auch ein Grenze. Apache hat die Direktive [LimitRequestBody] (http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody), die gesetzt werden könnte. Wenn es vorhanden ist, muss es gleich oder größer sein als 'post_max_size' –

+1

Also von dem, was ich verstehe, wenn ich ein Formular habe, das 3 Uploads mit Caps bei 20mb hat, wäre es in Ordnung," upload_max_filesize = 20M "zu haben, aber' post_max_size' würde muss auf '60M' eingestellt sein? –

+0

@TonyM Ja, das ist richtig. – Brad

4

post_max_size ist wie die Obermenge. upload_max_filesize steht im Kontext mit Datei-Uploads, aber post_max_size wird für alle Arten von POST-Daten überprüft. Es kann ein sehr großer Inhalt sein, der gepostet werden kann, der durch post_max_size begrenzt ist. Für eine große Datei, die Sie hochladen möchten, müssen Sie beide Grenzwerte ändern.

+0

Aus den Dokumenten für 'post_max_size': *' "Setzt maximale Größe der Post-Daten erlaubt. Diese Einstellung hat auch Auswirkungen auf Datei-Upload. Um große Dateien hochzuladen, muss dieser Wert größer sein als upload_max_filesize." '* – Sam

+0

@Sam denke ich Das, worauf Neo hinwies, ist, dass post_max_size size alle Dateien enthalten muss, aber größer sein sollte (als die Summe aller hochgeladenen Dateien), da es viel mehr enthalten kann (Parameter, MIME - Begrenzer, etc.) – Alex

Verwandte Themen