CODEXSHAPER执行PUT请求遇cURL错误,如何修改HTTP版本?
解决CODEXSHAPER中PUT请求的cURL HTTP/2错误
问题背景
执行PUT请求时收到报错:
cURL Error: HTTP/2 stream 0 was not closed cleanly: Unknown error code (err 1)
需要强制cURL使用HTTP/1.1版本,对应配置代码:curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
具体实现步骤
1. 优先使用框架自带配置项
多数封装框架会提供HTTP版本的配置入口:
- 找到CODEXSHAPER的配置目录(通常是
config/),查找http.php或类似配置文件; - 寻找
http_version或相关字段,将其值设置为CURL_HTTP_VERSION_1_1或对应的字符串1.1; - 保存配置后重启应用,测试请求是否恢复正常。
2. 直接修改框架的cURL封装类
如果框架没有暴露配置项,找到封装cURL的核心类(比如src/Http/CurlClient.php或类似路径):
- 定位到初始化cURL资源的方法(通常包含
curl_init()); - 在
curl_init()之后、curl_exec()之前,插入以下代码:
curl_setopt($this->curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
- 保存文件后重新测试请求。
3. 通过钩子/回调修改请求参数
若框架支持请求钩子:
- 查找框架文档中关于请求前置回调的说明(比如
before_send、pre_request等钩子); - 在回调函数中获取当前cURL资源实例,添加上述
curl_setopt配置; - 注册钩子后执行请求验证效果。
验证方法
修改完成后,可通过开启cURL的调试模式(添加curl_setopt($curl, CURLINFO_HEADER_OUT, true);),打印请求头确认HTTP/1.1是否被使用。
内容的提问来源于stack exchange,提问作者outzo
相关产品推荐
相关产品推荐

