【发布时间】:2013-04-02 12:32:38
【问题描述】:
我正在测试我制作的一个小应用程序,当上传多个超过一定大小的文件时,我看到了一个奇怪的行为。
我读过这里提到的the bug,但它是很久以前的事了。奇怪的是,我遇到了与那个人在错误中提到的相同的行为。
- 当我上传时,假设 10 个小文件(每个 50-300kb)没有任何问题,并且应用程序正常工作。
- 当我上传两个各 1.5mb 的文件时,应用程序会输出一条错误消息,因为应用程序允许的最大大小为 512kb(php.ini 中为 2mb)。
- 当我上传多个超过 7 或 8 mb 的文件(我没有尝试找到确切的大小)时,php 崩溃而没有给出错误。由于我在开发服务器中,因此错误已打开,通常会显示致命错误。
- 当我上传 1 个文件(比如 25mbs)时,我仍然遇到同样的错误。
好吧,我说它崩溃了,因为当我尝试 var_dump($_FILES) 甚至 var_dump($_POST) 时,数组返回 null 尽管它应该至少有提交名称或其他名称。
我检查了 tmp 文件夹,文件也没有存储在那里。然而,另一个奇怪的行为是,当我上传超过这个神秘限制的文件时,浏览器似乎正在上传(我看到页面需要一段时间才能加载),但是,如前所述,php 表现得好像它什么都不知道。
这种奇怪行为的原因是什么?
PS:我正在使用 Windows 7 64 位上的本地主机(wampserver)。
编辑
找到解决方案:
将 post_max_size 从 8mb 更改为其他大小解决了我的问题。
这里是来自the manual 的报价给需要的人:
设置允许发布数据的最大大小。此设置也会影响文件 上传。要上传大文件,此值必须大于 上传最大文件大小。如果您的配置启用了内存限制 脚本,memory_limit 也会影响文件上传。通常来说,一般来说, memory_limit 应该大于 post_max_size。当一个整数是 使用时,该值以字节为单位。速记符号,如所述 在这个FAQ中,也可以使用。如果发布数据的大小更大 与 post_max_size 相比,$_POST 和 $_FILES 超全局变量为空。 这可以通过各种方式进行跟踪,例如通过传递 $_GET 处理数据的脚本的变量,即 ,然后检查是否 $_GET['processed'] 已设置。
【问题讨论】:
-
为什么不手动安装 PHP 和 Apache?或尝试使用 XAMP