即使upload_max_size大于文件大小,$ _FILE上传大文件也会出错1

时间:2010-11-23 11:36:50

标签: php file upload size

我有一个简单的上传表单:

enctype="multipart/form-data"/>

input type="hidden" name="MAX_FILE_SIZE" value="5900000" />

以下设置,在php.ini中应用(通过phpini()检查):

upload_max_filesize = 7MB  
memory_limit = 64M  
post_max_size = 8MB  

我尝试上传一个小的文件--500k,然后通过

我尝试上传一个5MB(小于upload_max_filesizepost_max_size设置的文件)并且失败并显示错误代码1:其中包含:

  

UPLOAD_ERR_INI_SIZE   价值:1;上传的文件超出了php.ini中的upload_max_filesize指令。

任何人都知道发生了什么事?

5 个答案:

答案 0 :(得分:53)

我认为这是因为拼写错误。而不是

upload_max_filesize = 7MB

应该阅读

upload_max_filesize = 7M

再次使用phpinfo()来检查实际应用的值。

答案 1 :(得分:7)


您还必须在“php.ini”

中设置post_max_size

答案 2 :(得分:3)

upload_max_filesize = 7M

此处的值类似于7M10M,但不是MB

再次使用phpinfo()检查实际应用的值。

使用以下代码了解问题所在。如果文件大小是问题,它只会打印出超过upload_max_filesize

php.ini指令的put。
<?php
$error_types = array(
    1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini.',
    'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.',
    'The uploaded file was only partially uploaded.',
    'No file was uploaded.',
    6 => 'Missing a temporary folder.',
    'Failed to write file to disk.',
    'A PHP extension stopped the file upload.'
);

// Outside a loop...
if ($_FILES['userfile']['error'] == 0) {
    // here userfile is the name
    // i.e(<input type="file" name="*userfile*" size="30" id="userfile">
    echo "no error ";
} else {
    $error_message = $error_types[$_FILES['userfile']['error']];
    echo $error_message;
}
?>

通过这个我们可以很容易地识别问题。我们还可以使用switch(){ case }打印上述错误消息。

答案 3 :(得分:1)

这是我犯过的一个大错:

如果您要上传真正重要的文件,则必须将KeepAliveTimeout设置为高于5秒默认值。

例如:

KeepAliveTimeout 300

您可以在/etc/apache2/apache2.conf

中找到此媒体资源

答案 4 :(得分:0)

转到W HM->Service Configuration->PHP Configuration Editor并更新upload_max_filesize的值。