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

如何将CURL请求方法设置为PUT?代码失效求助

解决PHP Curl PUT请求失效的问题

嘿,我一眼就发现问题所在了——你在设置CURLOPT_CUSTOMREQUEST时用错了变量名!你初始化的Curl句柄是$ch,但这一行写成了$curl,导致PUT请求的配置根本没被应用到正确的句柄上,Curl自然还是用默认的请求方法在发送请求。

修正后的完整代码

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
// 修正变量名,把$curl改成$ch
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

// 别忘了执行请求并关闭句柄
$response = curl_exec($ch);
if(curl_errno($ch)){
    echo 'Curl错误:' . curl_error($ch);
}
curl_close($ch);

额外的优化建议

  • 可以去掉手动设置的Content-Length头:Curl会自动根据CURLOPT_POSTFIELDS的内容计算并设置正确的长度,避免因字符串编码或计算失误导致的请求异常;
  • 生产环境中建议开启SSL验证:CURLOPT_SSL_VERIFYHOST和CURLOPT_SSL_VERIFYPEER设为0会跳过SSL证书校验,存在安全风险,建议保留默认的1(或2)值,并确保服务器的SSL证书是可信的;
  • 如果你更倾向于标准的PUT方式,也可以使用CURLOPT_PUT,但它通常配合CURLOPT_INFILE用于读取文件内容发送,对于内存中的JSON数据,当前CURLOPT_CUSTOMREQUEST + CURLOPT_POSTFIELDS的方式更直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:03