upload_max_filesize 设置为 1G 时无法上传超过 500MB 的文件

Unable to upload files over 500MB while upload_max_filesize is set to 1G

我意识到已经有很多关于此的问题,但我已经关注了所有问题,但找不到任何有关如何进一步调试此问题的信息。

我可以上传 490 MB 的文件,绝对没问题。我无法上传 562.8 MB 的文件。

我是 运行 php 7.0.11 与 fpm,nginx 1.11.3,ubuntu 16 并使用 Laravel 5.1

我的 php ini 设置是:

upload_max_filesize 1GB

post_max_size 1GB

memory_limit 1GB (this shouldn't actually be needed but i've tried it anyway)

我的 nginx 设置:

client_max_body_size 1G

我没有找到任何其他需要更改或可能会干扰的变量的引用。

当我上传时 $_FILES 看起来像:

["file"]=>
  array(5) {
    ["name"]=> string(36) "CSBgGvDIAaZtbC4lmliLevHf0bAnWiKM.rar"
    ["type"]=> string(0) ""
    ["tmp_name"]=> string(0) ""
    ["error"]=> int(1)
    ["size"]=> int(0)
  }

我的 nginx 或 php 错误日志中没有任何内容。

$_SERVER['content_length'] 是 652844444,这是文件的正确长度。

'error' 被列为1。我不知道这是真正的1,还是相关错误信息中的1。 php 文档在文档中列出了 1 的错误消息:

The uploaded file exceeds the upload_max_filesize directive in php.ini.

但两者都是:

echo phpinfo();
echo ini_get('upload_max_filesize');

显示 1GB,因此文件不应超过它,因为它是 562.8 MB。

没有进一步的错误消息,并且遵循了我可以在 Google 上找到的每条说明和指南,我完全不知道它可能是什么。

我也在使用 Cloudflare,但此子域已关闭 Cloudflare,而且 Cloudflare 的限制是 100MB 而不是 500MB,所以我认为这与此无关。

有什么办法可以进一步调试吗?在这一点上我完全不知所措。

您使用的是 cloud/hosted 服务器吗?许多托管服务器对最大文件上传有硬性限制,即使使用 ini 文件,它们也不会让您覆盖。如果您使用的是托管服务器,您可能需要联系您的托管服务提供商以覆盖您的限制。

所以我解决了这个问题。真的很烦人。问题是我在 php.ini 中输入了 1GB 而不是 1G。没有给出错误消息,也不清楚它是否没有使用 1 GB。但是 php.ini 无法识别您必须在没有 B 的情况下使用的 1KB、1MB 或 1GB 之类的东西。

吸取教训,浪费了很多时间。

如果您正在使用 wp 站点 插件 考虑在 php.in 中更改两个常量(在 wp-config.php 更新后无效。很多开发人员在 Whosebug 中建议)在这样做后有效。ubuntu 20
地点

sudo nano /etc/php/7.4/apache2/php.ini

常数

post_max_size = 1G

upload_max_filesize = 1G