当使用 curl 向 php 后端发送较大 json 字符串时,若直接以字符串形式传入 `curlopt_postfields`,apache 可能因请求体解析异常(如误判为非标准 post)而返回 404;正确做法是将 json 封装为关联数组键值对,并确保 content-type 与服务端接收逻辑一致。
在 Zend Server 2019.7(PHP 7.3 + Apache 2.4)环境中,你遇到的「小数据正常、大数据返回 404」现象,并非由 post_max_size 或 max_input_vars 等常见配置限制导致,而根本原因是 cURL 的 CURLOPT_POSTFIELDS 行为机制被 Apache/Zend Server 误解为“非标准表单提交”,从而触发路由或模块层面的 404 响应。
当你写:
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); // $json_data 是纯 JSON 字符串
cURL 会以 Content-Type: application/x-www-form-urlencoded(默认)发送请求 —— 即使你手动设置了 'Content-Type: application/json' 头,PHP 的 $_POST 超全局变量仍无法自动解析该 JSON 字符串,且某些服务器环境(尤其是 Zend Server 的请求过滤模块)会对无 name=value 结构的原始 POST body 做异常处理,甚至直接拒绝路由到目标脚本(如 recon.php),最终返回 404。
✅ 注意:404 并非来自 PHP 应用层(如文件不存在),而是 Apache/Zend Server 在请求预处理阶段因无法识别有效 POST 格式而中断了请求分发。
将 JSON 字符串作为某个字段的值,通过数组方式提交,强制 cURL 使用 multipart/form-data 或保持 x-www-form-urlencoded 但结构合规:
$json_data = '{ "Recon": [ /* ... large JSON array ... */ ] }';
$url = 'http://192.168.1.100/projectname/recon.php';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
// ✅ 关键修复:将 JSON 作为数组字段值(而非裸字符串)
curl_setopt($ch, CURLOPT_POSTFIELDS, ['json_payload' => $json_data]);
// ✅ 必须显式声明 Content-Type(否则 Apache 可能忽略)
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Code: $http_code\n";
echo $result;由于你已改用表单字段提交(json_payload),服务端不能再依赖 file_get_contents('php://input')(此时为空),而应从 $_POST 中读取并解码:
// recon.php
if (isset($_POST['json_payload'])) {
$raw_json = $_POST['json_payload'];
$data = json_d
ecode($raw_json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400);
echo json_encode(['error' => 'Invalid JSON']);
exit;
}
// ✅ 正常处理 $data['Recon']...
echo json_encode(['status' => 'success', 'count' => count($data['Recon'])]);
} else {
http_response_code(400);
echo json_encode(['error' => 'Missing json_payload']);
}不要混淆 application/json 与表单提交:若坚持用 php://input 接收原始 JSON,则必须确保 CURLOPT_POSTFIELDS 传字符串 + Content-Type: application/json,且 Apache 的 mod_security、mod_proxy 或 Zend Server 的 Web Application Firewall(WAF)未拦截非常规 Content-Type 请求 —— 这在 Zend Server 中尤为常见。
验证实际请求头:用 curl -v 或 Wireshark 抓包确认真实发出的 Content-Type 和 body 结构。
检查 Zend Server 特定限制:进入 Zend Server Admin UI → Server Config → PHP Settings,确认 suhosin.post.max_name_length、suhosin.request.max_value_length(如有启用 Suhosin)未截断长字段名或值。
替代方案(推荐用于纯 API 场景):如需真正 RESTful 设计,建议统一使用 file_get_contents('php://input') + 原始 JSON 提交,并在 Apache 配置中显式允许:
# 在虚拟主机或 .htaccess 中RewriteEngine On # 确保 JSON 请求不被重写规则误判 RewriteCond %{CONTENT_TYPE} application/json RewriteRule .* - [E=HTTP_CONTENT_TYPE:application/json]
通过将 JSON 封装为 CURLOPT_POSTFIELDS 数组字段,既规避了 Apache 对裸 JSON body 的兼容性陷阱,又保持了向后兼容性与调试便利性 —— 这是 Zend Server 等企业级 PHP 环境中处理大体积 JSON POST 的稳健实践。
# php
# js
# json
# apache
# 大数据
# app
# access
# ssl
# 后端
# curl
# proxy
# 路由
# 表单提交
# restful
# 关联数组
# 封装
相关文章:
如何解决VPS建站LNMP环境配置常见问题?
网站企业制作流程,用什么语言做企业网站比较好?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何选择高效便捷的WAP商城建站系统?
如何用PHP快速搭建CMS系统?
已有域名和空间,如何快速搭建网站?
如何快速生成凡客建站的专业级图册?
建站之星如何一键生成手机站?
专业公司网站制作公司,用什么语言做企业网站比较好?
制作农业网站的软件,比较好的农业网站推荐一下?
淘宝制作网站有哪些,淘宝网官网主页?
广州营销型建站服务商推荐:技术优势与SEO优化解析
如何通过免费商城建站系统源码自定义网站主题与功能?
制作公司内部网站有哪些,内网如何建网站?
如何高效完成独享虚拟主机建站?
建站之星安装模板失败:服务器环境不兼容?
建站主机默认首页配置指南:核心功能与访问路径优化
用v-html解决Vue.js渲染中html标签不被解析的问题
如何用y主机助手快速搭建网站?
建站主机服务器选型指南与性能优化方案解析
建站168自助建站系统:快速模板定制与SEO优化指南
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
自助网站制作软件,个人如何自助建网站?
如何使用Golang安装API文档生成工具_快速生成接口文档
制作门户网站的参考文献在哪,小说网站怎么建立?
七夕网站制作视频,七夕大促活动怎么报名?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
建站之星好吗?新手能否轻松上手建站?
建站之星×万网:智能建站系统+自助建站平台一键生成
如何用搬瓦工VPS快速搭建个人网站?
如何用狗爹虚拟主机快速搭建网站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
建站之星后台管理:高效配置与模板优化提升用户体验
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何选择建站程序?包含哪些必备功能与类型?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
*服务器网站为何频现安全漏洞?
如何在云指建站中生成FTP站点?
简单实现Android验证码
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
网站图片在线制作软件,怎么在图片上做链接?
家具网站制作软件,家具厂怎么跑业务?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
,怎么在广州志愿者网站注册?
*请认真填写需求信息,我们会在24小时内与您取得联系。