post_max_size是PHP层面限制POST数据总大小的核心参数,默认8M,必须≥上传文件与表单数据总和且≤memory_limit,修改后需重启Apache生效。

PHP 的 post_max_size 是主要限制点
XAMPP 中 POST 数据大小被截断或返回空 $_POST,绝大多数情况是 PHP 层面的 post_max_size 太小(默认通常为 8M),而非 Apache 或 MySQL 的配置。这个值必须 ≥ 表单实际提交的数据体积(含文件、字段名、边界符等),且不能超过 memory_limit。
-
post_max_size必须写成带单位的字符串,例如"64M",不能写67108864(字节数) - 它只控制整个 POST 请求体的总大小,不区分文件或文本字段
- 若设为
"0",PHP 会拒绝所有 POST 请求(不是“不限制”,这点常被误解) - 修改后必须重启 Apache 才生效,仅刷新页面无效
同时检查 upload_max_filesize 和 memory_limit
上传大文件时,upload_max_filesize 会先于 post_max_size 触发拦截;而解析超大 POST 时,memory_limit 可能因内存不足导致脚本崩溃或静默失败。三者需协同调整:
-
upload_max_filesize应 ≤post_max_size(推荐设为post_max_size的 80%~90%,留出字段开销余量) -
memory_limit建议至少为post_max_size的 2 倍(PHP 解析时需额外内存构建数组、处理编码等) - 例如:要支持 64MB POST,可设
post_max_size = 64M、upload_max_filesize = 56M、memory_limit = 128M
修改位置:XAMPP 自带的 php.ini 文件
XAMPP 使用独立的 PHP 配置,不是系统全局的 php.ini。正确路径取决于安装方式:
- Windows 默认:
C:\xampp\php\php.ini - macOS 默认:
/Applications/XAMPP/xamppfiles/etc/php.ini - Linux 默认:
/opt/lampp/etc/php.ini
用文本编辑器打开后搜索以下三行,取消注释(删掉前面的分号 ;),并修改数值:
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
post_max_size = 64M upload_max_filesize = 56M memory_limit = 128M
改完保存,再通过 XAMPP 控制面板重启 Apache。验证是否生效:新建一个 info.php,内容为 ,访问后搜索关键词确认值已更新。
Apache 层面极少需要调大 LimitRequestBody
Apache 默认不限制请求体大小(LimitRequestBody 为 0),但若你手动配置过该指令(比如在 httpd.conf 或虚拟主机中设了 LimitRequestBody 10485760),它会成为硬性上限,且优先级高于 PHP 设置。此时即使 PHP 改了也没用。
- 检查
C:\xampp\apache\conf\httpd.conf或extra\httpd-vhosts.conf中是否含LimitRequestBody - 如存在且值过小,直接删掉该行,或设为
LimitRequestBody 0(表示不限) - 修改后同样需重启 Apache
多数用户根本没动过这项,所以不必优先排查——先确认 PHP 配置是否生效,再看 Apache 是否有额外限制。










