PHP上传奇怪的行为

时间:2013-04-02 12:32:38

标签: php upload

我正在测试我制作的一个小应用程序,当我上传多个超过一定大小的文件时,我发现了一个奇怪的行为。

我已经阅读了这里提到的the bug,但很久以前就是这样了。奇怪的是,我遇到了与那个人提到的相同的行为。

  1. 当我上传时,说10个小尺寸的文件(每个50-300kb),没有任何错误,应用程序也能正常工作。
  2. 当我上传两个文件,每个文件1.5mb时,应用程序会输出一条错误消息,因为应用程序允许的最大大小为512kb(php.ini中为2mb)。
  3. 当我上传时,多个文件超过7或8 MB(我还没有尝试找到确切的大小),php崩溃而没有出错。由于我在开发服务器中,因此会打开错误,通常会显示致命错误。
  4. 当我上传1个文件(比如说25个)时,我仍然有同样的错误。
  5. 好吧,我说它崩溃了,因为当我尝试var_dump($_FILES)甚至var_dump($_POST)时,数组返回null,尽管它至少应该包含提交名称或其他。

    我已经检查了tmp文件夹,但文件也没有存储在那里。然而,另一个奇怪的行为是,当我上传超过这个神秘限制的文件时,浏览器似乎正在上传(我看到页面需要一段时间才能加载),但是,如上所述,php表现得像它什么都不知道。

    这种奇怪行为可能会有什么原因?

    PS:我在Windows 7 64位上使用我的localhost(wampserver)。

    修改

    找到解决方案:

    将post_max_size从8mb改为其他东西解决了我的问题。

    以下是the manual对需要的人的引用:

      

    设置允许的帖子数据的最大大小。此设置也会影响文件   上传。要上传大文件,此值必须大于   upload_max_filesize的。如果配置启用了内存限制   脚本,memory_limit也会影响文件上传。一般来说,   memory_limit应大于post_max_size。当一个整数是   使用时,该值以字节为单位。简写符号,如上所述   在这个FAQ中,也可以使用。如果发布数据的大小更大   比post_max_size,$ _POST和$ _FILES超全局都是空的。   这可以以各种方式跟踪,例如,通过$ _GET   变量到处理数据的脚本,即,然后检查是否   已设置$ _GET ['已处理']。

2 个答案:

答案 0 :(得分:1)

这是错误,因为您的上传限制非常少 - upload_max_filesize or post_max_size。 在php.ini中只增加两者的值为200MB,你将不会收到此错误

答案 1 :(得分:1)

在服务器中发送帖子有限制。你应该是512kb。你可以签入phpinfo();

我认为它是php.ini upload_max_filesize中的参数。改变到更大的尺寸。