2010-09-21 96 views
3

如何捕获上传到我的web服务器的文件上的错误,该文件大于php upload_max_filesize?PHP文件上传大于upload_max_filesize,错误

我的问题与so/large-file-upload-errors-with-php类似,虽然我的内存限制设置为512M,所以问题所使用的分辨率对我没有帮助。

我想上传一个文件6.9MB,例如我的upload_max_filesize = 6M。我的脚本基本上只是停止执行,我不知道在哪里或为什么。另外,我打开了错误报告。我

也应该注意到,文件< 6MB我可以用下面的代码正确上传和处理:

if(isset($_FILES['file']['name']) and !empty($_FILES['file']['name'])){ 

    $info = pathinfo($_FILES['file']['name']); 
    $ext = $info['extension']; 
    //verify file is of allowed types 
    if(Mimetypes::isAllowed($ext)){ 
     if(filesize($_FILES['file']['tmp_name']) <= AttachmentUploader::$maxFilesize){    
      $a = new AttachmentUploader();  //for file uploading 
      if($a->uploadFile($_FILES['file'], 'incident', $_POST['sys_id'])){ 
       header("location: ".$links['status']."?item=incident&action=update&status=1&place=".urlencode($links['record']."id=".$_POST['sys_id']));    
      }else{ 
       header("location: ".$links['status']."?item=incident&action=update&status=-1&place=".urlencode($links['record']."id=".$_POST['sys_id']));   
      } 

     }else{  
      $errors[] = 'The file you attempted to upload is too large. 0.5MB is the maximum allowed size for a file. If you are trying to upload an image, it may need to be scaled down.'; 
     } 
    }else{ 
     $errors[] = 'The file you attempted to upload is not allowed. Acceptable extensions: jpg, gif, bmp, png, xls, doc, docx, txt, pdf'; 
    } 
}else{ 
    $errors[] = 'Please attach a file.'; 
} 

我的php.ini设置:

;;;;;;;;;;;;;;;;;;; 
; Resource Limits ; 
;;;;;;;;;;;;;;;;;;; 

max_execution_time = 7200  ; Maximum execution time of each script, in seconds 
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB) 


;;;;;;;;;;;;;;;; 
; File Uploads ; 
;;;;;;;;;;;;;;;; 

; Whether to allow HTTP file uploads. 
file_uploads = On 

; Temporary directory for HTTP uploaded files (will use system default if not 
; specified). 
upload_tmp_dir = /tmp 

; Maximum allowed size for uploaded files. 
upload_max_filesize = 6M 
+0

请问你的Web服务器日志的任何错误?你是否超过'max_input_time'? – Wrikken 2010-09-21 16:55:05

+0

我无法理解我是在最大输入时间,因为我在千兆局域网上连接到服务器,并且一个大于6MB的文件几乎是瞬间完成的。我会检查它。 – Chris 2010-09-21 16:59:56

回答

3

的错误是在$_FILES['userfile']['error']。您只需检查该值是否为UPLOAD_ERR_INI_SIZE即可检测该文件是否大于php.ini中定义的最大大小。


资源:

+0

它总是'userfile'还是它是输入字段的名称? – Chris 2010-09-21 16:46:36

+0

它基于字段名称。 ($ _FILES ['file'] ['error'] === UPLOAD_ERR_OK){echo“['file'] ['error']' – 2010-09-21 16:47:30

+0

在检查提交按下后,错误“;}其他{回声”没有错误“;}我的脚本没有回应任何价值。 – Chris 2010-09-21 16:52:47