413请求实体太大-文件上传问题


100

我试图在服务器上上传30MB文件,但无法正常工作。

  1. 当我上传30MB文件时,页面加载了“找不到页面

  2. 上传3MB文件时,收到带有nginx / 0.6.32的“ 413 Request Entity Too Large

我正在尝试找到nginx,因此可以增加“ client_max_body_size ”,但找不到服务器上安装的nginx。我什至尝试运行:

vi /etc/nginx/nginx.conf

要么

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

检查配置文件是否存在,但是我无法在服务器上找到它。

反正有解决此问题的方法吗?还是我必须在服务器上安装Nginx。

编辑:

我已经在php.ini文件中进行了所有必要的更改,

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

谢谢Raju



嗨,穆罕默德,我一直在寻找nginx,但在我的服务器上找不到它。我敢肯定,nginx没有安装在我的服务器上,所以我很困惑为什么我收到属于Nginx的错误消息
Raju Vishwas 2014年

首先你mustbe肯定ngix没有安装在服务器上,但如果你完全确定,它可能出于安全原因,一些服务器管理人员迷惑黑客用这一招
Ashouri

您是否尝试过ps aux | grep nginx查看它是否正在运行?
rpkamp 2014年

你试过了which nginx吗?这将为您提供可执行文件的位置,而不是配置文件的位置,但它至少应确认是否已安装nginx。
道格·麦克莱恩

Answers:


128

资料来源:http : //www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

编辑nginx的conf文件:

nano /etc/nginx/nginx.conf

在http部分中添加一行:

http {
    client_max_body_size 100M;
}

不使用MB它将不起作用,只有M!

也别忘了重启nginx

systemctl restart nginx

当我这样做时,我的413变成了404。我在EC2上使用Amazon Linux。另外,nginx doc会显示小写的“ m”。nginx.org/en/docs/http/…–
珠穆朗玛峰,

它要求输入密码来更改文件。但我不记得设置一个。我想念什么吗?
Sooraj

1
nano的路径应为nano /etc/nginx/nginx.conf。
MaXi32

为我工作,但请注意:如果您的配置中已有http { }部分,请在其中添加其余部分!添加新http {}部分将失败,并"http" directive is duplicate在Nginx日志中给出错误。
jerclarke

43

-在php.ini中(在/etc/php.ini内部)

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

-in nginx.conf(在/ opt / nginx / conf内部)

client_max_body_size 24000M

它适合我的情况


嗨,阿伦,您的服务器存在的问题是,我找不到已安装的nginx,但仍然显示nginx错误
Raju Vishwas 2014年

在/ opt或/ etc中找到nginx。在nginx内找到conf文件夹,然后找到nginx.conf。
阿伦2014年

如果上述想法不起作用,请使用任何搜索工具在整个Linux内搜索nginx.conf。
阿伦(Arun)2014年

`max_input_time = 24000`,24000是毫秒?
利沙伯·阿格拉哈里(Rishabh Agrahari),

1
@RishabhAgrahari Seconds!这设置了以秒为单位的最长时间。默认设置为-1,这意味着将使用max_execution_time。设置为0以允许无限的时间
肖恩

18

首先编辑Nginx配置文件(nginx.conf

位置: sudo nano /etc/nginx/nginx.conf

添加以下代码:

http {
        client_max_body_size 100M;
}

然后在PHP配置文件(php.ini)中添加以下行

位置: sudo gedit /etc/php5/fpm/php.ini

添加以下代码:

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

1
nginx.conf按照指示打开了文件,但是它是空的!我没想到这一点,但是当我添加您的代码时,它仍然可以正常工作……正如我猜到的那样,但是由于某种原因,我不是,而且我很高兴能做到这一点!
安德鲁·福克斯

9

我将更改直接添加到我的虚拟主机而不是nginx的全局配置中,如下所示:

   server {
     client_max_body_size 100M;
     ...
   }

然后,像上面的注释一样,在php.ini中更改参数:

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

而您不能忘记的是重新启动nginx和php-fpm,在centos 7中是这样的:

  systemctl restart nginx
  systemctl restart php-fpm

8

请输入域nginx文件:

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

将此代码添加到文件中

client_max_body_size 24000M;

如果出现错误,请使用此命令

nginx -t

6
sudo nano /etc/nginx/nginx.conf

然后在http部分添加一行

http {
    client_max_body_size 100M;
}

不要仅使用MB。

systemctl restart nginx

然后为PHP位置

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

现在最大使用php 7.0或更高版本

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

检查你渴望增加的那些。

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

重新启动php-fpm

service php-fpm restart 

4

假设您在php.ini文件中进行了必要的更改:

您可以通过在以下路径的nginx.conf文件中添加以下行来解决此问题:

/etc/nginx/nginx.conf

然后使用vim文本编辑器编辑文件,如下所示:

vi /etc/nginx/nginx.conf

并添加具有足够大值的client_max_body_size,例如:

client_max_body_size 20MB;

之后,请确保您使用:xi或保存:wq

然后重启你的nginx。

而已。

为我工作,希望对您有所帮助。


2

我完成了上述更改的上传。但是,当我进行更改时,我开始在文件上传中得到404响应,这导致我进行进一步的调试,并通过检查nginx error.log找出了权限问题。

解:

在/ var / lib / nginx上检查当前用户和组所有权。

$ ls -ld /var/lib/nginx

drwx ------ 3 nginx nginx 10月5日19:31 / var / lib / nginx

这表明一个可能不存在的名为nginx的用户和组拥有此文件夹。这阻止了文件上传。

就我而言,“ / etc / nginx / nginx.conf”中提到的用户名是

user vagrant; 

在这种情况下,将文件夹所有权更改为nginx.conf中定义的用户。

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

确认它实际上已更改。

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

重新加载nginx和php-fpm以确保安全。

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

权限被拒绝的错误现在应该消失。检查error.log(基于nginx.conf的error_log位置)。

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

0

打开文件/etc/nginx/nginx.conf 添加或更改client_max_body_size 0;


0

采用:

php -i

命令或添加:

phpinfo();

获取配置文件的位置。

根据您的需要和服务器更新这些变量

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

在Linux上,您将需要重新启动nginx / apache和phpfpm服务,以便加载新的ini设置。在xampp上,您可以从此类应用程序随附的控制面板重新启动这些功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.