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
我意识到已经有很多关于此的问题,但我已经关注了所有问题,但找不到任何有关如何进一步调试此问题的信息。
我可以上传 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