php 的 post 数据大小由 php.ini 中 post_max_size 控制,需 ≥ upload_max_filesize 且 ≤ memory_limit;修改后须重启 php 引擎(如 php-fpm 或 apache),并通过 phpinfo() 验证生效。

Apache 本身不直接控制 PHP 的 POST 数据大小,这个限制由 PHP 自身配置决定。关键是要修改 php.ini 中的 post_max_size 参数,并确保它与相关参数协同生效。
post_max_size 必须 ≥ upload_max_filesize
这是最容易出错的一点:post_max_size 不是单指文件,而是整个 POST 请求体上限,包括所有表单字段、文本内容和文件数据。如果设为 8M,哪怕上传一个 5M 文件 + 1M 文本,也会被截断——结果是 $_FILES 和 $_POST 全为空,页面可能直接空白。
-
upload_max_filesize = 50M→ 单个文件上限 -
post_max_size = 52M→ 整个 POST 请求上限(必须比 upload_max_filesize 大,留出 multipart 边界和字段开销) - 两者单位统一,推荐用
M(如50M),避免写成52428800这类字节数
还要同步检查 memory_limit
PHP 处理上传时会把 POST 数据读入内存(尤其未启用流式处理时),所以 memory_limit 必须 ≥ post_max_size,否则上传中途就报“Allowed memory size exhausted”。
- 例如:设
post_max_size = 52M,建议memory_limit = 64M或更高 - 若项目还做图像处理、ZIP 解压等操作,需额外预留内存
改完要重启对应 PHP 运行模块
Apache 只是 Web 服务器,真正加载 php.ini 的是 PHP 引擎。重启方式取决于你的部署模式:
- 用 mod_php(传统 Apache 模块)→ 重启 Apache:
sudo systemctl restart apache2 - 用 PHP-FPM(更常见,尤其 Nginx 或新版 Apache)→ 必须同时重启 PHP-FPM:
sudo systemctl restart php8.1-fpm(版本号按实际调整) - 仅改 .htaccess 或用 ini_set() 无法覆盖 post_max_size(该参数是 PHP 启动时解析的,运行时不可变)
验证是否生效
新建一个 info.php 放在网站根目录,内容为 <?php phpinfo(); ?>,访问后搜索 post_max_size 和 upload_max_filesize,确认显示值是你刚设置的数值。别只看 php.ini 路径——要确认“Loaded Configuration File”指向的是你编辑的那个文件。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











