Ubuntu20.04 LAMP下cURL POST请求PHP返回空数组问题咨询
你提供的cURL输出是否表示POST成功?
是。从输出可以明确确认本次测试请求完全正常:
- cURL已正确发送
Content-Type: application/x-www-form-urlencoded格式的POST数据,23字节内容完全上传 - 服务端返回的响应体已经输出
array(1) { ["name"]=> string(4) "rabbit" },证明PHP已经成功接收并解析到了POST参数,该测试场景下不存在配置问题。
实际场景返回空数组的排查方案
如果你其他同逻辑请求返回空数组,和本次测试结果不符,按以下优先级排查:
- 确认请求是否存在301/302跳转:常见如HTTP强制跳转HTTPS、域名带www/不带www的跳转,跳转过程会默认丢弃POST body,可在cURL命令中加
-L参数跟随跳转验证,或直接请求最终跳转后的地址 - 检查
php.ini配置:确认enable_post_data_reading参数值为On,该参数关闭后PHP不会解析任何POST数据 - 排查上层代理逻辑:如果站点部署了CDN、反向代理(如Nginx)、WAF等组件,确认是否有规则限制了POST请求体大小、或者修改了请求的Content-Type
- 确认提交的数据格式:如果你提交的是JSON、XML等非
application/x-www-form-urlencoded/multipart/form-data格式的数据,PHP不会自动解析到$_POST中,需要手动通过file_get_contents('php://input')读取原始请求体再自行解析 - 检查应用层代码:确认是否有框架、全局公共代码提前清空了
$_POST变量,或者路由重写逻辑意外丢弃了请求体
额外说明:服务端接收POST请求不需要安装php-curl扩展,该扩展仅用于PHP作为客户端发起HTTP请求时使用,和服务端接收能力无关。
内容的提问来源于stack exchange,提问作者S.C.
相关产品推荐
相关产品推荐

