CentOS7 Apache环境PHP7.4读取php://input内容被截断问题咨询
需调整的遗漏配置项
PHP 侧配置检查
- 确认修改的是生效的php.ini文件:通过
phpinfo()页面查看Loaded Configuration File字段对应的路径,避免修改错误的配置文件导致不生效,修改完成后需重启服务 - 检查
memory_limit配置:该值需大于post_max_size,建议设置为128M或更高 - 若使用PHP-FPM模式,检查php-fpm对应池配置(通常为
/etc/php-fpm.d/www.conf)中的php_admin_value[post_max_size]、php_admin_value[upload_max_filesize]配置,池配置会覆盖php.ini的全局配置 - 检查
always_populate_raw_post_data配置:PHP 7.0+版本需设置为-1,避免POST数据读取异常
Apache 侧配置检查
- 检查
LimitRequestBody指令:该指令默认值部分版本为1048576(即1M),可在httpd.conf、虚拟主机配置或.htaccess中设置为LimitRequestBody 57671680(对应55M,与post_max_size匹配) - 若启用mod_security模块,检查以下配置项:
SecRequestBodyLimit:值需设置为不小于55MSecRequestBodyNoFilesLimit:值需设置为不小于55M
- 若使用HTTPS协议,检查
SSLRenegBufferSize配置:默认值为1M,需调整为大于请求体大小的数值
额外排查建议
- 请求类型适配:如果前端提交的是
multipart/form-data类型的带文件请求,php://input本身不支持读取该类型完整请求体,建议改用$_FILES+$_POST组合获取提交数据,避免额外转换开销 - 配置修改完成后,需执行
systemctl restart httpd,若使用PHP-FPM需额外执行systemctl restart php-fpm,确保配置生效 - 若服务器前置反向代理/CDN服务,需同步检查代理层的请求体大小限制配置,避免代理层提前截断请求
内容的提问来源于stack exchange,提问作者Panda
相关产品推荐
相关产品推荐

