You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何XAMPP放入含cURL POST代码的PHP文件后Apache无法读取目录

问题描述

XAMPP环境运行状态正常,localhost路径下其余所有目录均可正常访问。但将下述cURL测试PHP文件放入目标目录后,浏览器直接返回Object not found错误,且触发问题时该PHP文件所在的整个目录都无法被Apache解析访问,并非单个文件访问异常。

<?php 
$data = array (
  'number' => 1,
  'current_date' => date('Y-m-d'),
  'name' => 'RS'
);
$ch = curl_init();

$options = array(
  CURLOPT_URL => 'http://localhost/fake_api/',
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => $data, 
  CURLOPT_RETURNTRANSFER => 1,
);

curl_setopt_array($ch, $options);

$result = curl_exec($ch);

curl_close($ch);

print_r($result);
?>

目前处于本地自学cURL POST请求编写阶段,后续需要在生产服务器向线上API发起POST请求,该问题导致测试流程无法推进。
已单独部署存放fake_api接口的PHP文件目录,Apache可正常识别该路径,直接通过浏览器访问http://localhost/fake_api/时可正常返回array()结果。

排查与解决步骤

该问题和你写的cURL逻辑本身无关,是Apache目录级访问规则异常导致的,按以下顺序排查即可:

  • 检查目标目录下是否存在.htaccess文件
    XAMPP默认开启了目录级配置覆写权限,部分编辑器、安全防护工具会在检测到目录内存在向外发起POST请求的PHP代码时,自动生成包含错误重写规则的.htaccess文件,只要该文件存在,整个目录的所有请求都会被转发到不存在的路径,直接触发404。开启系统隐藏文件可见后找到该文件直接删除,即可恢复目录访问。
  • 校验Apache虚拟主机配置
    如果删除.htaccess后问题依旧,打开XAMPP的Apache虚拟主机配置文件,找到目标目录对应的<Directory>配置段,确认没有配置错误的RewriteRule跳转规则、没有设置错误的目录访问权限,修改完成后重启Apache服务即可。
  • 检查mod_security规则拦截
    如果开启了Apache的mod_security模块,部分默认的WAF规则会拦截目录内包含cURL外发POST请求特征的访问请求,临时关闭对应规则后重试即可。

额外提示:你当前代码中直接给CURLOPT_POSTFIELDS传入PHP数组,cURL会自动将请求编码为multipart/form-data格式,如果后续对接的线上API要求application/x-www-form-urlencoded格式,需要将传入的数组通过http_build_query()处理后再赋值给该参数。

内容的提问来源于stack exchange,提问作者Yenmangu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:48:14