仅当文件大小超过某个大小时,PHP文件上载失败
我有一个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文件上载失败,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代码
通过更多的尝试,我找到了一个解决方案,而不是一个很好的解决方案,我自己找到了一个解决方案,可以按照预期上传任何大小的文件。方法是更改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