2010-10-28 66 views
3

我有一个可以上传文件的PHP应用程序。当我上传的大多数文件,并做了print_r($_FILES),我得到的是这样的:上传文件太大时无法正常工作

Array 
(
    [import] => Array 
     (
      [name] => Array 
       (
        [excel_file] => COD MKTG 2.csv 
       ) 

      [type] => Array 
       (
        [excel_file] => application/vnd.ms-excel 
       ) 

      [tmp_name] => Array 
       (
        [excel_file] => /tmp/phpy8mEKn 
       ) 

      [error] => Array 
       (
        [excel_file] => 0 
       ) 

      [size] => Array 
       (
        [excel_file] => 1584286 
       ) 

     ) 

) 

我还有一个CSV文件,它更像是13兆字节,当我尝试上传,我得到这个:

Array 
(
    [import] => Array 
     (
      [name] => Array 
       (
        [excel_file] => COD MKTG.csv 
       ) 

      [type] => Array 
       (
        [excel_file] => 
       ) 

      [tmp_name] => Array 
       (
        [excel_file] => 
       ) 

      [error] => Array 
       (
        [excel_file] => 1 
       ) 

      [size] => Array 
       (
        [excel_file] => 0 
       ) 

     ) 

) 

我没有得到任何错误,说该文件太大。我只是得到了一个畸形的$_FILES。我已将php.ini中的post_max_size设置为100MB。这是为什么发生?

+0

仔细检查它是PHP实际使用的php.ini文件,而不是副本 – 2010-10-28 15:37:45

+0

好的建议 - 以前烧过我。但在这种情况下,情况也是如此。 – 2010-10-28 15:49:40

回答

12

按照PHP的文档,错误代码1是UPLOAD_ERR_INI_SIZE:“上传的文件超过了php.ini中的upload_max_filesize指令”

您需要确保所有的fol降脂变量设置正确:

upload_max_filesize - 在上载的任何单个文件的最大尺寸
max_file_uploads - 允许上传
post_max_size文件的总数 - 被张贴总和的所有数据(表单数据+文件)
memory_limit - 必须>的post_max_size,以便用于PHP +脚本开销

而且最重要的是,还有的Web服务器的限制,以及。 Apache的获得LimitRequestBody这将在PHP进入图片之前很久以前应用。

+1

+1 for webserver LimitRequestBody参考 – 2010-10-28 15:41:24

+0

原来是'upload_max_filesize'。我可以告诉,因为错误代码是“1”:http://php.net/manual/en/features.file-upload.errors.php – 2010-10-28 18:25:18

+0

是的。那是你原来的帖子。 – 2010-10-28 18:30:48

1

更改内存限制以及 memory_limit = 8M;

也许20?

也许执行时间

的max_execution_time

编辑:

确保其不执行时间看它......

,如果你有一个非常缓慢的互联网连接也可能是

max_input_time

它必须是其中的一个或有什么问题你的脚本 或者您没有正确设置设置

memory_limit的

的max_execution_time

max_input_time设置

+0

不,我的memory_limit是128M,我仍然在256获得相同的结果。我的脚本也没有超时。 – 2010-10-28 15:21:31

+0

更新了答案 – Breezer 2010-10-28 15:29:09

0

您也可以尝试你的根目录

php_value upload_max_filesize 128M 
php_value post_max_size 128M 
php_value max_execution_time 200 
php_value max_input_time 200 
0

据我所知,PHP有大文件的问题,当涉及到文件系统函数内的.htaccess文件设置这些值。 32位编译的PHP有2147483647作为PHP_INT_MAX,这意味着大于〜2G的文件不会打开,搜索等。这个数字在64位编译的PHP [大约4 +万亿字节 - 8字节的有符号整数是]中更大。

在此刻,我试图解决这个问题[我正在尝试将JumpLoader集成到我的CMS项目中。这是完成的,除了与这个2G翻盖问题有关的部分 - 不能在大于2G的文件上工作],所以一旦我得到了这个解决方案,就会分享它。

现在祝你好运。

相关问题