最近做一个项目,做资源上传的模块时,我想肯能上传较大的文件,所以我在php.ini中设置如下
max_execution_time = 600
upload_max_filesize=2048M
max_input_time = 600
memory_limit = 2048M
post_max_size = 2048M
但是表单提交后,确没有任何反应。
最后发现$_FILE为NULL,没有值!
再后来发现当设置为post_max_size = 1536M后就又可以正常上传了!
难道post_max_size有上限吗?那么最大可以设置为多大呢?(我这里好像是2G)
如果真有的话,那如果要上传很多G的东西要怎么实现呢?
请各位大哥指点一下啊!我准备这个项目做完就去找工作的……再不找过年后就没地去了啊……
大家救救我吧!

解决方案 »

  1.   

    2G用post传
    32位机子限制4g以内操作
    64位也就8g吧还可以看看这段说明:
    Note: PHP allows shortcuts for bit values, including K (kilo), M (mega) and G (giga). PHP will do the conversions automatically if you use any of these. Be careful not to exceed the 32 bit signed integer limit (if you’re using 32bit versions) as it will cause your script to fail.
      

  2.   

    我就是post传的呀!为什么2G都不行,最后设置成1.5G的才行
      

  3.   

    这个问题好像开始说的有些问题!是超过了post_max_size后$_FILE就没值,但是post_max_size的值超过2G,php程序就会出问题!
      

  4.   

    时间我设为十分钟了,难道不够吗?而且不是不能下载的问题,
    如果把post_max_size的值设为超过2G,则打不开任何php程序,打开以后显示的都是空白!
      

  5.   


    "奴家就是喜欢大么......"
    shenhaofang 涨红了脸,一副娇嗔的样子。
      

  6.   

    以前看到个贴说php处理2G以上的时候有问题
      

  7.   

    是的!如果post_max_size设置为2G以上,即使上传1b的文件都不能成功!都显示空白……
      

  8.   

    有符号长整形正数的上限是 2G,16进制表示为 0x80000000
    这可能是问题的所在另外,涉及到得几个参数应该协调memory_limit > post_max_size >= upload_max_filesize
    upload_max_filesize < max_execution_time * 平均网速且合理
    按你的配置
    max_execution_time = 600
    upload_max_filesize=2048M
    max_input_time = 600
    memory_limit = 2048M
    post_max_size = 2048M需要网速达到 3.4M字节每秒,并且需10分钟上传时间
    没有一个用户会接受这一现状的
      

  9.   

    非常感谢!版主的解答,但小弟还有两个问题:
    1.表单中用file标签提交过来的文件会有部分转换为长整形正数吗?是apache服务器的机制吗?能详细解释一下他内部的转换机制吗?
    2.如果要上传超过2G的文件,有什么其它快速的方法吗?
      

  10.   

    <form enctype= "multipart/form-data ">没这参数去$_FILES肯定是空
      

  11.   

    这个肯定是有的……不然upload_max_filesize设为小于2G的时候也不会成功的……
      

  12.   

    想通了!我的系统不识别内存超过2G的部分,可能是因为apache认为upload_max_filesize设置的值超过了我机器的最大内存了吧!