POST Content-Length excede o limite

94

Eu recebo erros semelhantes no meu error_log no php quando os usuários estão enviando seus arquivos

Aviso PHP: POST Content-Length de 11933650 bytes excede o limite de 8388608 bytes em Desconhecido na linha 0

No meu php.ini (criado um arquivo ini personalizado em public_html) isso resolveria esse problema, quanto eu teria para configurá-lo para cerca de 1 GB? Vou mudar minhas configurações para isso no php.ini, isso resolverá o problema?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

Como eu definiria o limite de 'memory_limit'.

Também estaria correto em meu script verificar se o tamanho do arquivo carregado é <1 GB

if($_FILES["uploadedfile"]["size"]<1000000)
daza166
fonte
5
Tem certeza de que está editando o php.ini correto?
Pekka
Você está editando o php.ini correto (existem vários)? Algo mais está redefinindo as configurações? (por exemplo, alguma ligação para php_ini_set?)
Piskvor saiu do prédio em
Eu criei um arquivo php.ini personalizado em public_html
daza166
@daza: você não pode simplesmente colocar um php.ini em qualquer lugar que você quiser.PHP verifica apenas alguns locais, e o "diretório atual" não é um deles. Você pode usar as diretivas 'php_value' em seu arquivo httpd.conf e / ou .htaccess para definir em um diretório específico. Caso contrário, você terá que alterá-lo no arquivo .ini principal. Use php_info()para ver quais são suas configurações "locais" e quais arquivos .ini estão sendo usados.
Marc B
1
faça um info.php com <?php phpinfo(); ?>copie-o para public_html e chame-o em seu navegador. Em seguida, verifique se upload_max_filesize tem o valor correto.
DanielB

Respostas:

96

8388608 bytes é 8M, o limite padrão em PHP. Essas mudanças no php.ini devem realmente resolver o problema (certifique-se de reiniciar o servidor Apache depois de fazer isso).

O limite de memória não precisa ser alterado aqui.

ceejayoz
fonte
Certifique-se de reiniciar o servidor após fazer as alterações no arquivo .ini.
Sandhu
Se você estiver usando nginx + php fpm, certifique-se de reiniciar o daemon php sudo service php5-fpm restart
Gourneau
O reinício fez isso por mim. +1 Obrigado;)
Refilon
1
Deixe-me apenas postar aqui minha experiência, a reinicialização me deu um stop: Unknown instance:, estava apenas criando uma nova instância php5-fpm, mas meu servidor ainda estava usando a antiga, então tive que fazer sudo killall -KILL php5-fpmentãosudo service php5-fpm start
Memes
Dependendo do que mais está sendo feito no processo PHP que lida com o upload, pode ser necessário aumentar memory_limitpara um valor maior do que o tamanho máximo de upload desejado.
Craig Finch
45

Eu sugiro que você deve mudar post_max_sizede 8M para 32M no php.iniarquivo.

manson
fonte
39

você acabou de definir em php.ini

em seguida, defina:

upload_max_filesize = 1000M;
post_max_size = 1000M;

em seguida, reinicie o seu xampp .. Verifique a imagem

Farid Blaster
fonte
17

Tente colar em .htaccess e deve funcionar.

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
Mel
fonte
10

post_max_size deve ser ligeiramente maior que upload_max_filesize , porque ao enviar usando o método HTTP POST, o texto também inclui cabeçalhos com o tamanho e nome do arquivo, etc.

Se quiser fazer o upload de arquivos 1GiB com êxito, você deve definir:

upload_max_filesize = 1024M
post_max_size = 1025M

Observe que o sufixo correto para GB é G, ou seja, upload_max_filesize = 1G.

Não há necessidade de definir memory_limit .

ArticIceJuice
fonte
6

Em alguns casos, você precisa aumentar o tempo máximo de execução.

max_execution_time=30

eu fiz isso

max_execution_time=600000

então eu estava feliz.

Caixeiro viajante
fonte
7
freqüentemente você pode não querer fazer isso no php.ini porque permitiria que TODOS os processos do php rodassem por aquele período de tempo. Você pode configurá-lo em um único arquivo com set_time_limit (), por exemplo, set_time_limit (600000)
billrichards
5

Pode haver mais de um arquivo php.ini . Por exemplo, ao usar o WAMP, existem 2 arquivos php.ini nos seguintes diretórios:

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

Você precisa editar o primeiro.

Irfandi D. Vendy
fonte
4

Não concordo, mas esta solução de aumentar o tamanho do arquivo em php.ini ou .htaccess, não funcionará se o usuário enviar um arquivo maior que o permitido no aplicativo do servidor. Eu sugiro validar isso no front-end. Exemplo:

$(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('');
        }
    });
});

Marcio Muzzi
fonte
2
Discordar de quê?
Rob
1
Não há problema em validar o lado do cliente, mas não faz nada pela segurança, apenas para dar ao usuário um aviso imediato se ele estiver enviando um arquivo grande. O objetivo aqui não é impedir que os usuários enviem um arquivo grande, é permitir que eles enviem um arquivo grande.
Altimus Prime
1
Não há solução / verificação do lado do servidor para isso? Posso facilmente ignorar uma verificação JS.
akinuri
Nvm, descobri:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri
2

Se você estiver usando versões Php 5.6.X em windows usando Wamp, a localização do arquivo pode estar em,

C:\Windows\php.ini

Apenas tente com

post_max_size = 100M;

Tente fazer mudanças no Apache um. Por que seu Wamp / XAMP carrega o arquivo .ini

Satyanarayana
fonte