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

mgp*_*epe 28 php size upload file

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

enctype="multipart/form-data"/>
Run Code Online (Sandbox Code Playgroud)

input type="hidden" name="MAX_FILE_SIZE" value="5900000" />
Run Code Online (Sandbox Code Playgroud)

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

upload_max_filesize = 7MB  
memory_limit = 64M  
post_max_size = 8MB  
Run Code Online (Sandbox Code Playgroud)

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

我尝试上传一个5MB(小于两者upload_max_filesizepost_max_size设置)的文件,但它失败了,错误代码为1:其中说:

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

有人知道发生了什么事吗?

Pek*_*ica 54

我认为这是因为拼写错误.代替

upload_max_filesize = 7MB
Run Code Online (Sandbox Code Playgroud)

它应该读

upload_max_filesize = 7M
Run Code Online (Sandbox Code Playgroud)

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

  • 你是对的,这解决了问题.我没有意识到的技巧是phpinfo()确实显示7MB值,但它认为不合适.这一切都很好,luv ya (3认同)

小智 7


你还必须post_max_size在"php.ini"中设置


小智 5

upload_max_filesize = 7M
Run Code Online (Sandbox Code Playgroud)

这里的值类似于7Mor10M但不是MB

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

使用下面的代码来了解问题所在。如果文件大小是问题所在,它只会打印出 put as 超出了upload_max_filesize指令中的内容php.ini

<?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;
}
?>
Run Code Online (Sandbox Code Playgroud)

通过这个我们就可以很容易的找出问题所在。我们还可以使用switch(){ case }打印上面的错误信息。

  • 只是想注意 php 文档的错误代码和消息的链接:http://php.net/manual/en/features.file-upload.errors.php (2认同)