当使用 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
# 关联数组
# 封装
相关文章:
定制建站流程步骤详解:一站式方案设计与开发指南
如何在企业微信快速生成手机电脑官网?
如何用狗爹虚拟主机快速搭建网站?
如何通过cPanel快速搭建网站?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
专业网站建设制作报价,网页设计制作要考什么证?
魔方云NAT建站如何实现端口转发?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何用PHP工具快速搭建高效网站?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何在Windows服务器上快速搭建网站?
制作网站的公司有哪些,做一个公司网站要多少钱?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
建站主机功能解析:服务器选择与快速搭建指南
C#如何在一个XML文件中查找并替换文本内容
建站主机选购指南:核心配置优化与品牌推荐方案
零服务器AI建站解决方案:快速部署与云端平台低成本实践
公司网站制作价格怎么算,公司办个官网需要多少钱?
建站org新手必看:2024最新搭建流程与模板选择技巧
建站上传速度慢?如何优化加速网站加载效率?
如何通过远程VPS快速搭建个人网站?
制作网站公司那家好,网络公司是做什么的?
,交易猫的商品怎么发布到网站上去?
设计网站制作公司有哪些,制作网页教程?
免费网站制作appp,免费制作app哪个平台好?
如何通过虚拟主机快速搭建个人网站?
如何确认建站备案号应放置的具体位置?
大连网站设计制作招聘信息,大连投诉网站有哪些?
制作网站的模板软件,网站怎么建设?
网站制作的步骤包括,正确网址格式怎么写?
香港服务器租用费用高吗?如何避免常见误区?
香港服务器如何优化才能显著提升网站加载速度?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
招商网站制作流程,网站招商广告语?
如何选购建站域名与空间?自助平台全解析
如何通过山东自助建站平台快速注册域名?
建站之星如何优化SEO以实现高效排名?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何选择最佳自助建站系统?快速指南解析优劣
如何选择PHP开源工具快速搭建网站?
如何选择适配移动端的WAP自助建站平台?
建站之星价格显示格式升级,你的预算足够吗?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
图册素材网站设计制作软件,图册的导出方式有几种?
*请认真填写需求信息,我们会在24小时内与您取得联系。