仅当文件大小超过某个大小时,PHP文件上载失败

仅当文件大小超过某个大小时,PHP文件上载失败,php,apache,Php,Apache,我有一个PHP文件上传代码段(HTML和PHP代码),上传可以很好地处理较小的文件大小,几KB,20KB,但是,从30KB或以上开始,上传将失败,$\u FILES['userfile']['error']显示一个错误代码2:意思是“upload\u errr\u FORM\u SIZE”,指表单上的最大文件大小设置,目前为200000(200KB,足够大);我检查了所有相关的PHP设置,似乎没有问题 下面列出了所有的源代码、PHP设置和PC环境,有人可以建议解决方案吗?提前谢谢 HTML代码

我有一个PHP文件上传代码段(HTML和PHP代码),上传可以很好地处理较小的文件大小,几KB,20KB,但是,从30KB或以上开始,上传将失败,$\u FILES['userfile']['error']显示一个错误代码2:意思是“upload\u errr\u FORM\u SIZE”,指表单上的最大文件大小设置,目前为200000(200KB,足够大);我检查了所有相关的PHP设置,似乎没有问题

下面列出了所有的源代码、PHP设置和PC环境,有人可以建议解决方案吗?提前谢谢

HTML代码 二手电脑环境
通过更多的尝试,我找到了一个解决方案,而不是一个很好的解决方案,我自己找到了一个解决方案,可以按照预期上传任何大小的文件。方法是更改Apache的根文件夹-将上面的HTML文件(fupload.HTML)所在的文件夹设置为根文件夹,就是这样

说这是一个变通办法而不是解决办法,因为这个问题在以下两点上对我来说仍然很奇怪和困惑:

(1) 不一致性。在我的解决方法之前,似乎存在一个文件大小阈值(30KB): 低于它的上传可以正常工作,高于它的上传会失败!为什么会存在这样一个阈值?怎么会呢 阈值恰好是30 KB的某个值?
--------------
请注意,所有文件上载实验都是在允许文件大小的设置下完成的 大于30KB

(2) 为什么仅仅通过更改Apache的doc根文件夹就可以解决这个问题

=================================================================================

进一步参考关于实验的信息

文件夹结构-

d:\phptst\
xampp.html(a href=“./chap4/fupload.html”…)

d:\phptst\chap4\
fupload.html, fupload.php

d:\phptst\chap4\up\file\
(用于上传的文件)

(1) 最初,Apache的根文件夹设置为d:\phptst\,fupload.html将被间接调用并运行 通过包含fupload.html链接的xampp.html,这里出现了“30KB”阈值问题

(2) 将Apache的根目录更改为d:\phptst\chap4\,并调用直接运行fupload.html,问题消失了

=================================================================================

基于以上的细节和现象,希望有人能解释一下根本原因和问题到底是什么

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"/> 
<title>fupload</title>
</head>
<body>
<h3>File upload test</h3> 
<form method="POST" action="fupload.php" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="200000" />    
    <input name="userfile" type="file" size="70"/>
    <input type="submit" value="upload" />
</form>
</body>
</html>
<?php

// For test/debug
error_reporting(E_ALL);
ini_set('display_errors',1);


$uploaddir = './up/file/';
$uploadfile = basename($_FILES['userfile']['name']);

echo '$uploadfile='.$uploadfile;
echo '<br />Full upload filespec='.$uploaddir.$uploadfile;

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$uploadfile)) {
    echo "File upload done successfully!\n";

// For test/debug, display error code
echo '$_FILES[userfile][error]: '.$_FILES['userfile']['error'];

} else {
    echo "File upload failed!\n";

// For test/debug, display error code
echo '$_FILES[userfile][error]: '.$_FILES['userfile']['error'];
}
echo '<pre>';
?>
php.ini:
  upload_tmp_dir="C:\xampp\tmp"
  upload_max_filesize=20M
  post_max_size=100M
  memory_limit=128M

(Apache) httpd.conf:  
  LimitRequestBody 202400

  Apache default doc root changed to a folder on D:
Latest XAMPP, Windows 7
C: available size: 14.5GB
D: available size: 36.2GB