2011-10-13 10 views
34

Nel mio ospite sito, ho visto (tramite phpinfo) chePHP post_max_size sovrascrive upload_max_filesize

  • post_max_size = 8Mb
  • upload_max_filesize = 16Mb

Questo mi ha portato a pensare che dovrei essere in grado di caricare un file grande come 16 Mb. Tuttavia, quando faccio questo attraverso un metodo post (come normale), post_max_size prende il sopravvento e dichiara che ho inviato troppo.

Qual è il metodo che consente di inviare un file grande come 16 Mb? GET - PUT - altro?

Spero che qualcuno possa chiarire questo per me.

Simon

risposta

9

Il metodo normale per inviare un caricamento di file è POST, quindi anche post_max_size dovrebbe essere 16 MB o più.

Per inciso, anche memory_limit svolge un ruolo. Dovrebbe essere più grande di 16Mb, ma poiché il valore predefinito è 128Mb, non vedrai questo problema. Esempio php.ini configurazione:

post_max_size = 16M 
upload_max_filesize = 16M 
memory_limit = 128M 

modificare questi valori in php.ini se hai accesso ad esso, altrimenti si può provare a cambiarli in un file .htaccess.

php_value upload_max_filesize 16M 
php_value post_max_size 16M 

questo funziona solo se le impostazioni AllowOverride lo permettono. Altrimenti, devi chiedere alla tua società di hosting.

19

Con il caricamento dei file POST vengono eseguiti (in genere, esistono anche altri metodi). Guarda nel l'attributo di metodo del modulo che contiene il campo di caricamento file;)

Il limite più basso di qualsiasi impostazione relativa sostituisce un valore più alto:

Vedere Handling file uploads: Common Pitfals che spiega questo in dettaglio e come calcolare i valori.

66

upload_max_filesize è il limite di ogni singolo file. post_max_size è il limite dell'intero corpo della richiesta, che potrebbe includere più file.

Dato post_max_size = 20M e upload_max_filesize = 6M è possibile caricare fino a 3 file di 6 M ciascuno. Se invece è post_max_size = 6M e upload_max_filesize = 20M, è possibile caricare solo un file 6M prima di premere post_max_size. Non aiuta ad avere upload_max_size>post_max_size.

Non è ovvio come riconoscere andare oltre post_max_size. $_POST e $_FILES saranno vuoti, ma $_SERVER['CONTENT_LENGTH'] sarà> 0.Se il client semplicemente non caricare tutte le variabili postali o file, quindi $_SERVER['CONTENT_LENGTH'] sarà 0.

5

Le impostazioni di configurazione del server permette agli utenti di caricare file fino a 16 MB (perché è stata impostata upload_max_filesize = 16Mb), ma la post_max_size accetta dati post solo fino a 8 MB. Questo è il motivo per cui genera un errore.

Citato dal official PHP site:

  1. Per caricare file di grandi dimensioni, valore post_max_size deve essere maggiore di upload_max_filesize.

  2. memory_limit dovrebbe essere più grande di post_max_size

Si dovrebbe sempre impostare il valore post_max_size superiore al valore upload_max_filesize.

3

modifica in php.ini max_input_vars 1000

Problemi correlati