413 Solicitação de entidade muito grande - problema de upload de arquivo


100

Estou tentando carregar um arquivo de 30 MB no meu servidor e não está funcionando.

  1. Quando eu carrego um arquivo de 30 MB, a página carrega " Página não encontrada "

  2. Quando eu carrego um arquivo de 3 MB, recebo " 413 Request Entity Too Large " com nginx / 0.6.32

Estou tentando encontrar o nginx para que possa aumentar " client_max_body_size ", mas não consigo encontrar o nginx instalado em meu servidor. Eu até tentei correr:

vi /etc/nginx/nginx.conf

ou

vi /usr/local/nginx/conf/nginx.conf

para verificar se o arquivo de configuração existe, mas não consegui encontrá-lo no meu servidor.

Existe alguma maneira de resolver este problema? Ou eu tenho que instalar o nginx no meu servidor.

EDITAR:

Fiz todas as alterações necessárias em meus arquivos php.ini,

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

Obrigada raju



Olá, Mohammad, Procurei o nginx, mas não consegui encontrar no meu servidor. Tenho certeza de que o nginx não está instalado em meu servidor, então estou confuso de por que estou recebendo uma mensagem de erro que pertence ao Nginx
Raju Vishwas

primeiro você deve ter certeza de que o ngix não está instalado em seu servidor, mas se tiver certeza absoluta, talvez seja por razões de segurança, alguns gerenciadores de servidor para confundir hackers usam este truque
Ashouri

já experimentou um ps aux | grep nginxpara ver se está funcionando?
rpkamp de

Você já tentou which nginx? Isso lhe dará a localização do executável, não o arquivo de configuração, mas deve pelo menos confirmar se o nginx está instalado ou não.
Doug McLean

Respostas:


128

Fonte: http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

Edite o arquivo conf do nginx:

nano /etc/nginx/nginx.conf

Adicione uma linha na seção http:

http {
    client_max_body_size 100M;
}

Não use MB ele não vai funcionar, só o M!

Também não se esqueça de reiniciar o nginx

systemctl restart nginx

Quando faço isso, meu 413 se transforma em 404. Estou usando o Amazon Linux no EC2. Além disso, o documento nginx mostra um 'm' minúsculo. nginx.org/en/docs/http/…
nu everest

Ele está pedindo uma senha para alterar o arquivo. Mas não me lembro de definir um. Estou esquecendo de algo?
Sooraj

1
O caminho para o nano deve ser nano /etc/nginx/nginx.conf.
MaXi32 de

Funcionou para mim, mas NOTA: Se sua configuração já tem uma http { }seção, adicione o resto dentro dela! Adicionar uma nova http {}seção irá falhar e fornecer um "http" directive is duplicateerro no log do Nginx.
jerclarke

43

-in php.ini (dentro de /etc/php.ini)

 max_input_time = 24000
 max_execution_time = 24000
 upload_max_filesize = 12000M
 post_max_size = 24000M
 memory_limit = 12000M

-em nginx.conf (dentro de / opt / nginx / conf)

client_max_body_size 24000M

Está funcionando para o meu caso


Olá, Arun, o problema com o nosso servidor é, não consigo encontrar o nginx instalado, mas ainda apresenta o erro do nginx
Raju Vishwas

encontre nginx dentro de / opt ou / etc. Dentro do nginx, localize a pasta conf e, em seguida, nginx.conf.
Arun

Se a ideia acima não funcionar, procure por nginx.conf dentro do Linux inteiro, por qualquer ferramenta de busca.
Arun

`max_input_time = 24000`, 24000 é em milissegundos?
Rishabh Agrahari

1
@RishabhAgrahari Seconds! Isso define o tempo máximo em segundos. A configuração padrão é -1, o que significa que max_execution_time é usado no lugar. Defina como 0 para permitir tempo ilimitado
Sean

18

Primeiro edite o arquivo de configuração Nginx ( nginx.conf)

Localização: sudo nano /etc/nginx/nginx.conf

Adicione os seguintes códigos:

http {
        client_max_body_size 100M;
}

Em seguida, adicione as seguintes linhas no arquivo de configuração do PHP ( php.ini)

Localização: sudo gedit /etc/php5/fpm/php.ini

Adicione os seguintes códigos:

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

1
Abri meu nginx.confarquivo conforme as instruções, mas estava vazio! Eu não estava esperando por isso, mas quando adicionei seu código ele ainda funcionou ... como eu acho que era de se esperar, mas por alguma razão eu não estava e fiquei muito feliz quando isso aconteceu!
Andrew Fox

9

Eu adiciono as alterações diretamente ao meu host virtual em vez da configuração global do nginx, assim:

   server {
     client_max_body_size 100M;
     ...
   }

E então eu mudo os parâmetros no php.ini, como os comentários acima:

   max_input_time = 24000
   max_execution_time = 24000
   upload_max_filesize = 12000M
   post_max_size = 24000M
   memory_limit = 12000M

e o que você não pode esquecer é reiniciar o nginx e php-fpm, no centos 7 é assim:

  systemctl restart nginx
  systemctl restart php-fpm

8

Insira o arquivo nginx do domínio:

nano /etc/nginx/sites-available/domain.set

Adicionar ao arquivo este código

client_max_body_size 24000M;

Se você receber um erro, use este comando

nginx -t

6
sudo nano /etc/nginx/nginx.conf

Em seguida, adicione uma linha na seção http

http {
    client_max_body_size 100M;
}

não use MB apenas M.

systemctl restart nginx

então para localização php

sudo gedit /etc/php5/fpm/php.ini

por agora use o máximo de php 7.0 ou superior

sudo nano /etc/php/7.2/fpm/php.ini     //7.3,7.2 or 7.1 which php you use

verifique aqueles aumentando por seu desejo.

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

reinicie php-fpm

service php-fpm restart 

4

Supondo que você tenha feito as alterações necessárias em seus arquivos php.ini:

Você pode resolver o problema adicionando a seguinte linha em seu arquivo nginx.conf encontrado no seguinte caminho:

/etc/nginx/nginx.conf

em seguida, edite o arquivo usando o editor de texto vim da seguinte maneira:

vi /etc/nginx/nginx.conf

e adicione client_max_body_size com um valor grande o suficiente, por exemplo:

client_max_body_size 20MB;

Depois disso, certifique-se de salvar usando :xiou:wq

E então reinicie seu nginx.

É isso aí.

Funcionou para mim, espero que isso ajude.


2

Eu tenho o upload funcionando com as alterações acima. Mas quando fiz as alterações, comecei a obter a resposta 404 no upload de arquivo, o que me levou a fazer mais depuração e descobri que é um problema de permissão verificando nginx error.log

Solução:

Verifique o usuário atual e a propriedade do grupo em / var / lib / nginx.

$ ls -ld /var/lib/nginx

drwx ------. 3 nginx nginx 17 de outubro, 5 19:31 / var / lib / nginx

Isso informa que um usuário e grupo possivelmente inexistente chamado nginx possui esta pasta. Isso está impedindo o upload do arquivo.

No meu caso, o nome de usuário mencionado em "/etc/nginx/nginx.conf" era

user vagrant; 

Mude a propriedade da pasta para o usuário definido em nginx.conf neste caso vagrant.

$ sudo chown -Rf vagrant:vagrant /var/lib/nginx

Verifique se ele realmente mudou.

$ ls -ld /var/lib/nginx
drwx------. 3 vagrant vagrant 17 Oct  5 19:31 /var/lib/nginx

Recarregue o nginx e php-fpm para um sade mais seguro.

$ sudo service nginx reload
$ sudo service php-fpm reload

O erro de permissão negada agora deve desaparecer. Verifique o error.log (com base na localização do error_log nginx.conf).

$ sudo nano /path/to/nginx/error.log

0

Abrir arquivo /etc/nginx/nginx.conf Adicionar ou alterarclient_max_body_size 0;


0

Usar:

php -i

comandar ou adicionar:

phpinfo();

para obter a localização do arquivo de configuração.

Atualize essas variáveis ​​de acordo com sua necessidade e servidor

max_input_time = 24000
max_execution_time = 24000
upload_max_filesize = 12000M
post_max_size = 24000M
memory_limit = 12000M

No Linux, você precisará reiniciar os serviços nginx / apache e phpfpm para que as novas configurações ini sejam carregadas. No xampp, amps você pode reiniciá-los no painel de controle que vem com esses aplicativos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.