POST Content-Length supera il limite


94

Ottengo errori simili nel mio error_log in php quando gli utenti caricano i propri file

Avviso PHP: la lunghezza del contenuto POST di 11933650 byte supera il limite di 8388608 byte in Sconosciuto sulla riga 0

Nel mio php.ini (creato file ini personalizzato in public_html) questo risolverebbe questo problema, quanto dovrei impostarlo a circa 1 GB? Ho intenzione di modificare le mie impostazioni in questo modo in php.ini, risolverà il problema?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

A cosa dovrei impostare il limite "memory_limit".

Inoltre sarebbe corretto nel mio script per verificare che la dimensione del file caricato sia <1 GB

if($_FILES["uploadedfile"]["size"]<1000000)

5
Sei sicuro di voler modificare il php.ini corretto?
Pekka

Stai modificando il php.ini corretto (ce ne sono diversi)? Qualcos'altro sta ripristinando le impostazioni? (es. chiamate a php_ini_set?)
Piskvor ha lasciato l'edificio l'

Ho creato un file php.ini personalizzato in public_html
daza166

@daza: non puoi semplicemente rilasciare un php.ini ovunque tu voglia. PHP controlla solo alcune posizioni e "directory corrente" non è una di queste. Puoi usare le direttive "php_value" nel tuo httpd.conf e / o un file .htaccess da impostare in una particolare directory. Ma altrimenti dovrai cambiarlo nel file .ini principale. Da utilizzare php_info()per vedere quali sono le tue impostazioni "locali" e quali file .ini vengono utilizzati.
Marc B

1
crea un info.php con <?php phpinfo(); ?>copialo in public_html e chiamalo nel tuo browser. Quindi controlla se upload_max_filesize ha il valore corretto.
DanielB

Risposte:


96

8388608 byte è 8M, il limite predefinito in PHP. Queste modifiche a php.ini dovrebbero effettivamente risolvere il problema (assicurati di riavviare il tuo server Apache dopo averle fatte).

Il limite di memoria non dovrebbe essere modificato qui.


Assicurati di riavviare il server dopo aver apportato le modifiche nel file .ini.
Sandhu

Se stai usando nginx + php fpm assicurati di riavviare il demone php sudo service php5-fpm restart
Gourneau

Il riavvio lo ha fatto per me. +1 Grazie;)
Refilon

1
Permettetemi di pubblicare qui la mia esperienza, il riavvio mi ha dato una stop: Unknown instance:, stava solo creando una nuova istanza php5-fpm ma il mio server web stava ancora usando quella vecchia, quindi ho dovuto fare sudo killall -KILL php5-fpmallorasudo service php5-fpm start
Memes

A seconda di cos'altro viene fatto nel processo PHP che gestisce il caricamento, potrebbe essere necessario aumentare memory_limitfino a un importo maggiore della dimensione massima di caricamento desiderata.
Craig Finch

45

Suggerisco di passare post_max_sizeda 8M a 32M nel php.inifile.


39

stai solo impostando su php.ini

quindi impostare:

upload_max_filesize = 1000M;
post_max_size = 1000M;

quindi riavvia il tuo xampp .. Controlla l'immagine


17

Prova a incollarlo in .htaccess e dovrebbe funzionare.

php_value post_max_size 2000M
php_value upload_max_filesize 2500M
php_value max_execution_time 6000000
php_value max_input_time 6000000
php_value memory_limit 2500M

10

post_max_size dovrebbe essere leggermente più grande di upload_max_filesize , perché quando si carica utilizzando il metodo HTTP POST il testo include anche intestazioni con dimensione e nome del file, ecc.

Se vuoi caricare correttamente i file 1GiB, devi impostare:

upload_max_filesize = 1024M
post_max_size = 1025M

Nota, il suffisso corretto per GB è G, ovvero upload_max_filesize = 1G.

Non è necessario impostare memory_limit .


6

In alcuni casi, è necessario aumentare il tempo massimo di esecuzione.

max_execution_time=30

ce l'ho fatta

max_execution_time=600000

poi ero felice.


7
spesso potresti non volerlo fare in php.ini perché permetterebbe a TUTTI i processi php di funzionare per quel lasso di tempo. Puoi impostarlo in un singolo file con set_time_limit () ad esempio set_time_limit (600000)
billrichards

5

Potrebbe esserci più di un file php.ini . Ad esempio, quando si utilizza WAMP ci sono 2 file php.ini nelle seguenti directory:

  • C:\wamp\bin\apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

Devi modificare il primo.


4

Non sono d'accordo, ma questa soluzione per aumentare la dimensione del file in php.ini o .htaccess, non funzionerà se l'utente invia un file più grande di quanto consentito nell'applicazione server. Suggerisco di convalidarlo sul frontend. Esempio:

$(document).ready(function() {
    $ ('#your_input_file_id').bind('change', function() {
        var fileSize = this.files[0].size/1024/1024;
        if (fileSize > 2) { // 2M
            alert('Your custom message for max file size exceeded');
            $('#your_input_file_id').val('');
        }
    });
});


2
Non sei d'accordo con cosa?
Rob

1
Va bene convalidare il lato client, ma non fa nulla per la sicurezza, solo per dare un avviso immediato all'utente se sta caricando un file di grandi dimensioni. L'obiettivo qui non è impedire agli utenti di caricare un file di grandi dimensioni, ma consentire loro di caricare un file di grandi dimensioni.
Altimus Prime

1
Non esiste una soluzione / controllo lato server per questo? Posso facilmente bypassare un controllo JS.
akinuri

Nvm, capito:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri

2

Se stai usando le versioni di Php 5.6.X in Windows usando Wamp, la posizione del file potrebbe essere in,

C:\Windows\php.ini

Prova con

post_max_size = 100M;

Prova a fare modifiche in Apache One. Con questo il tuo Wamp / XAMP carica il file .ini

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.