使用PHP进行大型文件上载错误

时间:2009-04-16 17:06:41

标签: php apache file-upload

我有幻灯片显示的图片上传,用户不断上传2MB以上的文件。此大小的文件工作正常,但超过该大小的文件会导致浏览器超时。

以下是我的php ini设置:

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

这些设置在配置文件中,我可以直接更改它们。使用phpinfo()时会出现更改。

我正在运行apache服务器和php 4.3.9(客户端的选择,而不是我的)。 apache服务器的请求限制设置为默认值,我认为这大约是2GB左右?

当我使用firebug网络监视器时,看起来我没有收到服务器的完整响应,尽管我对使用此工具的经验不足。事情似乎在43秒左右超时。

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

我可以从这里找到解决此问题的任何建议吗?

以下是来自phpinfo()的相关php ini设置。如果我需要再发帖,请告诉我。

  • file_uploads On On
  • 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 Off Off
  • upload_max_filesize 10M 10M
  • upload_tmp_dir没有值没有值

4 个答案:

答案 0 :(得分:2)

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

我最近遇到了类似的问题,并且增加memory_limit设置对我有用。如果您将文件 content 读入变量,每个变量将占用与文件大小相同的内存,从而增加了脚本内存要求。

答案 1 :(得分:0)

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

如果确实正在应用这些设置,我建议使用phpinfo()调用进行检查:

<?php
  phpinfo();
?>

答案 2 :(得分:0)

如果它是共享主机,您的主机可能已设置限制以覆盖您的主机。

否则,请尝试将POST限制高于文件上载大小。 AFAIK,上传已发布。

答案 3 :(得分:0)

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

否则,有几十个Java applett上传器只需几美元(谷歌它)。他们拆分文件,上传部件并将部件透明地放回原处。

这是一个有保证的超时修复方法,还有一个额外的好处,就是让用户暂停和恢复上传,查看进度等等。

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