【问题标题】:(413) Request Entity Too Large error during file upload PHP(413)文件上传PHP期间请求实体太大错误
【发布时间】:2016-09-26 03:21:38
【问题描述】:

我遇到了一个与 PHP 文件上传有关的问题。我正在尝试使用 AJAX 提交表单。此 ajax 请求包含文本变量和文件。当我尝试只发送一个文件时,一切正常,但如果我发送多个文件。我收到 413 Request Entity Too Large 错误。我正在使用 Apache 。这是我的代码

const data = new FormData();
data.append('name', 'my upload file');

for (const i = 1; i <= 4; i++) {
    const img = $(`#src${i}`).find('img').attr('src');
    data.append(`image${i}`, img || '');
}

$.ajax({
    type: "POST",
    url: "server.php",
    data: data,
    cache: false,
    processData: false,
    contentType: false,
    success: (result) => {
        console.log(1);
    }
});

我上传的所有文件都小于 700KB,我还使用 ini_get_all() 检查了 PHP 配置,发现 post_max_size 是 48MB , upload_max_filesize 是 32MB 。我不明白这个问题的原因是什么。

为了检查我是否超过了允许的上传限制,我添加了四个文件(每个文件有 10KB),但它也产生了同样的问题,而我能够发送一个 400KB 的文件。有什么方法可以确定这个问题的根本原因。

【问题讨论】:

标签: php ajax


【解决方案1】:

您需要将您的 nginx conf (/usr/local/nginx/conf/nginx.conf) 设置更改为此

client_max_body_size 512M;//set it to higher mb

设置此值后需要重启 nginx

service nginx restart

【讨论】:

    【解决方案2】:

    http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestbody

    在您的 httpd.conf 或 .htaccess 文件中更改

    LimitRequestBody 0 #Unlimited
    

    然后重新启动 Apache 以确保更新更新。

    您还可以检查您的 httpd/apache 日志以查看您是否收到 ModSecurity 错误。如果是这样,请更新您的 ModSecurity 配置。 /etc/modsecurity/modsecurity.conf

    https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#SecRequestBodyNoFilesLimit

    【讨论】:

    • 谢谢,在免费的 000webhost 帐户上,我还必须在 .htaccess 上设置此值才能上传超过 10MB 的文件
    【解决方案3】:

    你需要在你的 php.ini 中设置 upload_max_filesize 和 post_max_size 的值:

    ;上传文件的最大允许大小。 upload_max_filesize = 64M

    ;必须大于或等于 upload_max_filesize post_max_size = 64M

    修改 php.ini 文件后,您需要重新启动 HTTP 服务器以使用新配置。

    您也可以在 php 中使用 .htaccess 来增加大小

    php_value upload_max_filesize 64M
    php_value post_max_size 64M
    php_value max_execution_time 300
    php_value max_input_time 300
    

    【讨论】:

    • 请检查我的最后一段。
    • Deepak 是不是因为需要传递一些数组什么的?
    • 因为我只是提到了一个类似的链接,而他们的做法略有不同。看看这个.. [使用 ajax 上传多个文件](abandon.ie/notebook/simple-file-uploads-using-jquery-ajax)。由于您的单次上传效果很好并且问题出在多个文件上......这可能是一些数组问题。
    • 我不知道根本原因,但这与我想的大小限制无关。 Apache配置中有什么限制最大上传文件的吗?
    • 可能只是答案中提到的内容。但我仍然认为错误应该是关于数组的。你为什么不通过在 000webhost 或一些免费域上托管它来测试它。 .它可能会清除有关实际问题的想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2021-06-18
    • 2014-08-09
    • 2018-05-20
    • 2015-10-04
    • 2017-02-16
    • 2016-02-01
    相关资源
    最近更新 更多