curl 调用,结果却演变成了一场“排雷大作战”。
以下是作为一个 PHP 开发者在 Windows 环境下最容易踩中的三个坑,以及我是如何“暴力破解”它们的。
---
CURL Error: SSL certificate problem: unable to get local issuer certificate
现场还原:
当我兴冲冲地按下运行键,PHP 却冷冰冰地回了我一个错误。
真相:Windows 下的 PHP 默认并不携带 CA 证书链(cacert.pem)。当你访问 HTTPS 网站时,PHP 就像个胆小的门卫:因为它不认识证书的签发机构,所以宁愿拒绝连接。
自救指南:
虽然正统做法是去 curl 官网 下载证书并在 php.ini 中配置,但紧急时刻,我们可以通过代码声明“我绝对信任它”:
``php
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
`
*注:此操作仅限开发测试,生产环境请务必配置正规证书!*
---
## 坑二:消失的路径与神秘的
**症状**:Failed to open stream: No such file or directory
**现场还原**:
我明明写了路径:'C:\Users\linke\.gemini mp\...',但 PHP 却说文件不存在。
**真相**:在 PHP 的双引号(甚至部分单引号)字符串中,反斜杠 是个调皮的转义符。
在我的路径里, 被 PHP 解释成了 **Tab 制表符**(如同你按了一下键盘上的 Tab 键)。原本的路径变成了 C:\Users\linke\.gemini[空格]mp\...。
**自救指南**:
在 PHP 中处理 Windows 路径,请养成使用 **正斜杠 /** 的好习惯:
`php
$path = 'C:/Users/linke/.gemini/tmp/article.md'; // 永远的神
`
PHP 会在底层自动帮你处理好兼容性,再也不用担心被转义符背刺。
---
## 坑三:API 协议的“仪式感”
**症状**:原本以为是普通的 POST,结果收获了 404。
**现场还原**:
我尝试访问 https://zhichai.net/mcp/tools/call,结果发现这并不是一个直接的资源路径。
**真相**:智柴的 MCP 接口采用的是严格的 **JSON-RPC 2.0** 协议。
这意味着:
1. **端点只有一个**:https://zhichai.net/mcp。
2. **结构必须标准**:你不能直接发参数,必须封装在一个包含 jsonrpc: "2.0"、method、params 和 id 的 JSON 结构里。
**自救指南**:
面对结构化协议,要像对待古老的祭祀仪式一样严谨:
`php
$payload = [
'jsonrpc' => '2.0',
'method' => 'tools/call',
'params' => [
'name' => 'create_topic',
'arguments' => ['title' => '...', 'content' => '...']
],
'id' => 1
];
``
---
还没有人回复