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

Posted

技术标签:

【中文标题】413 请求实体太大 - 文件上传问题【英文标题】:413 Request Entity Too Large - File Upload Issue 【发布时间】:2014-08-09 23:25:16 【问题描述】:

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

    当我上传 30MB 的文件时,页面加载“Page Not Found

    当我上传 3MB 文件时,我收到“413 Request Entity Too Largenginx/0.6.32

我正在尝试查找 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

谢谢, 拉朱

【问题讨论】:

请看这个链接可能对你有帮助cyberciti.biz/faq/…rtcamp.com/tutorials/php/increase-file-upload-size-limit 嗨 Mohammad,我已经在寻找 nginx,但在我的服务器上找不到它。我确定,我的服务器上没有安装 nginx,所以我很困惑为什么我会收到属于 Nginx 的错误消息 首先你必须确保你的服务器上没有安装 ngix,但如果你完全确定,它可能是出于安全原因,一些服务器管理器为迷惑黑客使用了这个技巧 你试过ps aux | grep nginx看看它是否在运行吗? 你试过which nginx吗?这将为您提供可执行文件的位置,而不是配置文件,但它至少应该确认是否安装了 nginx。 【参考方案1】:

来源: 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 文档也显示一个小写的“m”。 nginx.org/en/docs/http/… 它要求输入密码来更改文件。但我不记得设置了一个。我错过了什么吗? nano 的路径应该是 nano /etc/nginx/nginx.conf 。 为我工作,但注意:如果您的配置已经有 http 部分,请将其余部分添加到其中!添加新的http 部分将失败并在Nginx 日志中给出"http" directive is duplicate 错误。【参考方案2】:

-在 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

它适用于我的情况

【讨论】:

嗨 Arun,我们服务器的问题是,我找不到安装的 nginx,但它仍然给出 nginx 错误 在 /opt 或 /etc 中找到 nginx。在 nginx 中找到 conf 文件夹,然后找到 nginx.conf。 如果上面的想法不起作用,那么通过任何搜索工具在整个 Linux 中搜索 nginx.conf。 ` max_input_time = 24000`, 24000 是以毫秒为单位的吗? @RishabhAgrahari 秒!这以秒为单位设置最长时间。默认设置为 -1,这意味着使用 max_execution_time 代替。设置为 0 以允许无限时间【参考方案3】:

首先编辑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

【讨论】:

我按照指示打开了我的nginx.conf 文件,但它是空的!我没想到会这样,但是当我添加您的代码时,它仍然可以正常工作……正如我猜想的那样,但由于某种原因我没有这样做,而且当它这样做时我很高兴!【参考方案4】:
sudo nano /etc/nginx/nginx.conf

然后在http部分添加一行

http 
    client_max_body_size 100M;


不要只使用 MB 的 M。

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 

【讨论】:

【参考方案5】:

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

   server 
     client_max_body_size 100M;
     ...
   

然后我更改 php.ini 中的参数,就像上面的 cmets:

   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

【讨论】:

【参考方案6】:

请输入域 nginx 文件:

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

将此代码添加到文件中

client_max_body_size 24000M;

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

nginx -t

【讨论】:

【参考方案7】:

我遇到了同样的错误,并通过以下步骤修复了它。

    首先,编辑 nginx.conf 文件。

    vi /etc/nginx/nginx.conf

在 HTTP 部分,添加以下行。

http 

    client_max_body_size 100M;

    终于用下面的命令重启了 Nginx。

systemctl restart nginx

【讨论】:

【参考方案8】:

假设您在 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。

就是这样。

为我工作,希望这会有所帮助。

【讨论】:

【参考方案9】:

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

解决方案:

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

$ ls -ld /var/lib/nginx

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

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

在我的例子中,“/etc/nginx/nginx.conf”中提到的用户名是

user vagrant; 

在本例中将文件夹所有权更改为 nginx.conf 中定义的用户 vagrant。

$ 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 以获得更安全的 sade。

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

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

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

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

用途:

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、ammps 上,您可以从此类应用程序附带的控制面板重新启动它们。

【讨论】:

以上是关于413 请求实体太大 - 文件上传问题的主要内容,如果未能解决你的问题,请参考以下文章

(413) 请求实体太大 - 在 Azure 上上传 Wcf 时

413 Request Entity Too Large(请求实体太大)

413 请求实体太大 AWS Elastic Beanstalk

解决 413 Request Entity Too Large(请求实体太大)

解决错误 413 请求实体太大

413 请求实体太大 + Web 服务器连接已关闭 |错误 64