能直接用,但必须满足四个硬性条件:文件后缀为.http或.rest、首行格式为“大写方法+空格+完整URL”、变量先定义后引用、显式添加XDEBUG_SESSION_START: PHPSTORM头。

能直接用,但必须满足四个硬性条件:文件后缀正确、首行格式合法、变量先定义后引用、XDEBUG_SESSION_START头显式存在——缺一不可,否则连请求都发不出去。
怎么写一个能被PhpStorm识别的 .http 文件
PhpStorm 的 HTTP Client 不是通用脚本引擎,它只扫描项目内以 .http 或 .rest 结尾的纯文本文件,且仅在首行匹配“大写方法 + 空格 + 完整 URL”时才激活运行能力。
- ✅ 正确写法:
GET https://httpbin.org/get(顶格、无注释、无空格) - ❌ 错误写法:
get https://...(方法小写)、GET https://... # comment(URL 后带字符)、GET https://api.com/用户(中文未编码) - 文件不能放在桌面或系统临时目录,必须位于 PhpStorm 打开的项目根目录或子目录下
- 如果首行没亮起绿色甲虫图标,说明文件未被识别——别调试,先检查后缀和首行格式
变量怎么定义才不报 Cannot resolve variable
变量名只接受字母、数字、下划线,禁止点号(.)、短横线(-)、空格;且必须“先定义、后引用”,作用域由定义位置决定。
- 全局变量写在文件顶部(推荐):
@api_host = http://localhost:8000→ 全文件可用 - 环境块内变量用
###分隔:### @env dev\n@api_host = https://dev.api.com→ 仅对该块及之后请求生效 - 若用
http-client.env.json,必须放在项目根目录,内容为扁平结构:{"dev": {"base_url": "http://localhost:8000"}},引用时写{{base_url}},不能写{{base.url}} - 变量值为空时,PhpStorm 不报错也不发请求,只显示
Variable 'xxx' is not defined
POST JSON 请求为什么总卡在 400 或没响应
HTTP Client 对格式极其敏感,不校验语义,只按字面解析。少一个空行、多一个空格、JSON 缺引号,都会导致静默失败或 400。
立即学习“PHP免费学习笔记(深入)”;
- 结构必须严格三段:请求行 → 空行 → Header → 空行 → Body(顶格、无缩进)
-
Content-Type: application/json必须单独成行,大小写敏感,不能写成content-type或带前导空格 - Body 必须是合法 JSON:
{"name":"Alice"}✅,{name:"Alice"}❌(key 没引号) - URL 中的中文、空格、
/、?等必须手动 URL 编码,例如?q=%E4%BD%A0%E5%A5%BD,不能写?q=你好
调试 PHP 接口时断点不命中,光加 XDEBUG_SESSION_START 够吗
不够。它只是必要条件,不是充分条件。Xdebug 能否真正连上,取决于 CLI 和 Web SAPI 配置是否一致、网络路径是否通、脚本是否真被加载。
- 先验证基础:运行
php -v看 CLI 是否加载 Xdebug;访问phpinfo()页面确认xdebug.mode=debug且xdebug.client_host指向宿主机 IP(Docker 下别设localhost) - 请求必须带
XDEBUG_SESSION_START: PHPSTORMheader(大小写敏感),值需与 PhpStorm 设置里的 IDE key 一致(默认就是PHPSTORM) - 断点打在入口文件(如
public/index.php)第一行,确认通道是否打通;再查xdebug.log里有没有Connection to client successfully established - 框架路由常导致断点失效——你打在
api/users.php,但实际执行的是index.php,记得把断点移到真实入口或已加载的文件里
最容易被忽略的是路径问题:Xdebug 3.2+ 对含中文或空格的文件路径解析不稳定,断点位置可能无法对齐源码;还有 vendor 类断点不生效,往往是因为 PhpStorm 的 Include path 没映射到 vendor 目录。


















