大文件上传错误与PHP

问题描述:

我有一个图片上传的幻灯​​片,并且用户不断上传2MB以上的文件。这种大小下的文件工作正常,但超过大小的文件导致看起来像浏览器超时。大文件上传错误与PHP

这里是我的PHP INI设置:

  • 最大内存分配:12M
  • 最大上传文件大小:10M
  • 最大HTTP发布大小:10M
  • 最大执行时间:60
  • 最大输入解析时间:120

这些设置在t他配置文件本身,我可以直接更改它们。使用phpinfo()时会显示更改。

我运行在apache服务器和php 4.3.9(客户的选择,不是我的)。 apache服务器的请求限制被设置为默认值,我相信它在2GB左右?

当我使用Firebug网络监视器时,它看起来好像没有收到服务器的完整响应,尽管我对使用此工具的经验并不是很丰富。事情似乎在43秒左右就会超时。

我可以在网上找到的所有帮助指向上述设置作为罪魁祸首,但所有这些设置都远高于此2MB文件和43秒的超时。

在哪里我可以从这里解决这个问题的任何建议?

以下是phpinfo()中的相关php ini设置。让我知道是否需要再发布。

  • file_uploads开开
  • 的max_execution_time 60 60
  • max_input_nesting_level 64 64
  • max_input_time设置120 120
  • memory_limit的12M 12M
  • 的post_max_size 10M 10M
  • safe_mode设置关关
  • 的upload_max_filesize 10M 10M
  • upload_tmp_dir无值无值

请确保您有在php.ini启动错误报告:的display_errors =在;这可能会让你知道发生了什么。生产服务器通常(应该)禁用错误报告。

我最近有一个类似的问题,并增加memory_limit设置为我工作。如果将文件内容写入变量,则每个变量将占用与文件大小一样多的内存,从而增加了脚本内存要求。

这些设置在哪里?如果您使用的是.htaccess,那么您的Apache配置可能不允许您覆盖这些设置。

我建议有检查的phpinfo()调用,如果确实被应用或没有这些设置:

<?php 
    phpinfo(); 
?> 
+0

我有能力编辑这个特定的服务器上的php ini文件,他们显示在php信息。这就是为什么这个特殊问题真的困扰我的原因之一。我没有问题告诉人们上传较小的文件,但我现在有一个有趣的问题需要解决。 ;) – Mesidin 2009-04-16 17:14:08

+0

您可以请发布您的PHP.ini设置?我的意思是,只是那些影响文件上传。 – Seb 2009-04-16 17:17:38

+0

发布已更新! – Mesidin 2009-04-16 17:29:39

如果它是一个共享的主机,主机可能会设置限制来覆盖你的。

否则,请尝试使POST限制高于文件上传大小。 AFAIK,上传张贴。

如果问题是由于主机覆盖超时引起的,您可以查找仍使用Apache 1的主机:在Apache 1中,本地.htaccess即使超时也会覆盖全局设置。

否则,有几十个Java applet上传器仅售几美元(Google it)。他们分割文件,上传零件并将零件透明地放回。

这是一个有保证的超时解决方案,还有让用户暂停和恢复上传,查看进度等等的优势。

(基于Flash的上传者没有这个优势)