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

时间:2016-10-10 13:58:21

标签: php nginx file-upload large-files

我已经意识到这方面已经有很多问题,但是我已经跟踪了所有这些问题,并且无法找到有关如何进一步调试此功能的任何信息。

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

我使用fpm,nginx 1.11.3,ubuntu 16和使用Laravel 5.1运行php 7.0.11

我的php ini设置是:

  

upload_max_filesize 1GB

     

post_max_size 1GB

     

memory_limit 1GB(实际上不应该这样,但我还是试过了)

我的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,或者相关错误消息中的1。 php文档在文档中列出1的错误消息:

  

上传的文件超过了php.ini中的upload_max_filesize指令。

但两者都是:

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

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

没有进一步的错误消息,并且已经按照每条指令和指南进行操作,我可以在Google上找到完全丢失的信息。

我也在使用Cloudflare,但是这个子域已关闭,Cloudflare的限制是100MB而不是500MB所以我不认为它与此有任何关系。

有没有办法进一步调试这个?在这一点上,我完全失去了。

2 个答案:

答案 0 :(得分:0)

您使用的是云/托管服务器吗?许多托管服务器对最大文件上载有严格限制,即使使用ini文件也不允许覆盖它们。如果您使用的是托管服务器,则可能需要联系您的托管服务提供商以覆盖您的限制。

答案 1 :(得分:0)

所以我解决了这个问题。真的很烦人。问题是我在php.ini中键入1GB而不是1G。没有给出错误消息,并且根本不清楚它没有使用1千兆字节。但是如果没有B,php.ini将无法识别1KB,1MB或1GB等内容。

经验教训,浪费了很多时间。