在使用XAMPP搭建的本地开发环境中,默认配置下的POST请求大小和上传文件大小都有严格限制,当需要上传超过默认限制的大文件时,就需要调整相关的PHP配置参数,其中post_max_size是核心配置项之一。
XAMPP中需要修改的相关配置参数
要实现大文件上传,除了修改post_max_size之外,还需要同步调整几个相关的PHP配置参数,这些参数共同决定了文件上传的上限:
- post_max_size:设置POST请求体允许的最大大小,上传文件时文件内容会通过POST请求发送,所以这个值必须大于要上传的文件大小。
- upload_max_filesize:设置单个上传文件的最大允许大小,这个值不能超过post_max_size,否则上传会失败。
- max_execution_time:设置脚本的最大执行时间,大文件上传耗时较长,需要适当调大这个值避免脚本提前终止。
- max_input_time:设置脚本解析输入数据的最长时间,上传大文件时需要足够的时间来接收数据,也需要相应调大。
- memory_limit:设置脚本允许使用的最大内存,需要保证这个值大于post_max_size,避免内存不足导致上传失败。
修改XAMPP配置的具体步骤
1. 找到php.ini配置文件
XAMPP的PHP配置文件php.ini存放位置根据操作系统不同有所区别:
- Windows系统:XAMPP安装目录下的php文件夹中,默认路径为
C:xamppphpphp.ini。 - Linux/macOS系统:如果是通过官方包安装的XAMPP,php.ini通常在
/opt/lampp/etc/php.ini路径下。
如果找不到文件,可以新建一个PHP文件,写入如下代码查看php.ini的加载路径:
<?php phpinfo(); ?>
访问这个PHP文件,在页面中搜索Loaded Configuration File,就能看到当前生效的php.ini文件的完整路径。
2. 修改配置参数
用文本编辑器打开php.ini文件,搜索对应的参数名,修改其数值即可。如果要支持上传100MB以内的文件,可以参考如下配置:
; 设置POST请求最大为120MB,预留部分空间给其他POST数据 post_max_size = 120M ; 设置单个上传文件最大为100MB upload_max_filesize = 100M ; 脚本最大执行时间设置为300秒,即5分钟 max_execution_time = 300 ; 输入数据解析时间设置为300秒 max_input_time = 300 ; 内存限制设置为256MB,大于post_max_size memory_limit = 256M
修改完成后保存文件即可。
3. 重启XAMPP服务
修改php.ini文件后,必须重启XAMPP的Apache服务才能让配置生效:
- Windows系统:打开XAMPP控制面板,点击Apache对应的Stop按钮,等待停止后再点击Start按钮。
- Linux/macOS系统:在终端执行命令
sudo /opt/lampp/lampp restartapache即可重启Apache服务。
配置验证方法
配置完成后,可以再次访问之前创建的phpinfo页面,搜索对应的参数名,查看参数的数值是否已经更新为设置的值。如果数值没有变化,说明php.ini文件路径找错了,或者没有重启Apache服务。
也可以编写一个简单的上传测试脚本验证配置是否生效:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['upload_file'])) {
$file = $_FILES['upload_file'];
if ($file['error'] === UPLOAD_ERR_OK) {
$upload_dir = 'uploads/';
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
$target_path = $upload_dir . basename($file['name']);
if (move_uploaded_file($file['tmp_name'], $target_path)) {
echo '文件上传成功,保存路径:' . $target_path;
} else {
echo '文件移动失败';
}
} else {
echo '上传出错,错误码:' . $file['error'];
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>大文件上传测试</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="upload_file">
<button type="submit">上传文件</button>
</form>
</body>
</html>
将上面的代码保存为upload_test.php,放到XAMPP的htdocs目录下,访问这个页面上传一个接近设置大小的文件,如果上传成功则说明配置生效。
常见问题说明
如果修改配置后还是无法上传大文件,可以排查以下几个问题:
- 确认upload_max_filesize的值小于post_max_size的值,否则上传会被POST大小限制拦截。
- 确认表单的
enctype属性设置为multipart/form-data,否则文件无法正确通过POST请求发送。 - 检查上传目录是否有写入权限,Windows系统下可以右键目录设置Users用户组的写入权限,Linux/macOS系统可以执行
chmod 777 上传目录路径赋予权限。 - 如果是通过虚拟主机访问的站点,需要确认虚拟主机的配置中没有单独设置PHP参数覆盖全局的php.ini配置。
XAMPPpost_max_sizephp_ini大文件上传upload_max_filesize修改时间:2026-06-23 21:10:00