php文件上传奇怪的错误

时间:2012-01-23 00:58:08

标签: php file upload

为什么php会向我提供文件上传错误?

<?php

   if($_FILES["filename"]["size"] > 1024*25*1024)
   {
     $message = 'file must be less, than 25 mb';
     exit;
   }

   if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
   {

     move_uploaded_file($_FILES["filename"]["tmp_name"], "share/".$_FILES["filename"]["name"]);

     $message = 'succesfull!';
   } else {
      $message = 'Error upload file';
   }


?>
使用enctype ='multipart / form-data'

表单

在php.ini中我有

upload_max_file_size:25 mb Max_post_data = 25mb upload_tmp_dir = / tmp

为什么它不起作用?

3 个答案:

答案 0 :(得分:3)

如果您在$ _FILES上执行print_r,您将看到错误代码。错误代码的含义可以在这里找到:

http://www.php.net/manual/en/features.file-upload.errors.php

答案 1 :(得分:0)

如果您的内容长度大于最大帖子大小,则应使用异常处理程序,或者您应将此代码放在顶部代码中。

if ($_SERVER['REQUEST_METHOD']=='POST' && empty($_POST) && isset($_SERVER['CONTENT_TYPE']) && substr($_SERVER['CONTENT_TYPE'],0,19)=='multipart/form-data')
{
    if ($_SERVER['CONTENT_LENGTH']>1024*1024*25)
    {
        $message = 'file must be less, than 25 mb';
                exit;
    }
}

答案 2 :(得分:0)

验证您的php.ini设置如下所示:

upload_max_file_size=25M

常见错误包括:

upload_max_file_size = 0.25M     // Must be an integer

upload_max_file_size = 25M       // No spaces around equal sign

upload_max_file_size=25MB        // Use M not MB

;upload_max_file_size=25M        // Semicolon in front comments out the line.

更改php.ini后重新启动服务器。

参考:http://php.net/manual/en/faq.using.php#faq.using.shorthandbytes