news 2026/5/28 20:59:17

php cURL 常用参数详解与实用指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
php cURL 常用参数详解与实用指南
PHP 的 cURL 扩展是实现 HTTP/HTTPS 网络请求的核心工具。通过 curl_setopt() 函数设置多种请求参数。

一、核心基础参数(必选 / 必备)

这些参数是构建 cURL 请求的基础,确保请求能够正常初始化和执行。

参数常量

取值类型

详细说明

CURLOPT_URL

字符串

**必填。**目标请求 URL,例如

https://api.example.com/user。

CURLOPT_RETURNTRANSFER

布尔值(true/false)

- true:将请求结果作为字符串返回(推荐)

- false:直接输出到页面(默认,不推荐)

CURLOPT_HEADER

布尔值(true/false)

- true:响应结果包含响应头信息

- false:仅返回响应体(默认,常用)

补充:如需单独获取响应头,可用 CURLOPT_HEADERFUNCTION

CURLOPT_TIMEOUT

整数

设置请求的超时时间(秒)

,超时自动终止,推荐设置(如 30 秒),防止无限等待。

CURLOPT_CONNECTTIMEOUT

整数

设置连接服务器的超时时(秒)

,仅针对建立 TCP 连接阶段,常与 CURLOPT_TIMEOUT 配合使用(如 10 秒)。


二、请求方法与请求体参数(POST/PUT/DELETE 等)

默认 cURL 请求为 GET 方法。以下参数用于修改请求方法及传递请求体数据。

1. 请求方法相关

参数常量

取值类型

详细说明

CURLOPT_POST

布尔值(true/false)

- true:请求方法设为

POST(常用)

- false:不使用 POST(默认)

CURLOPT_CUSTOMREQUEST

字符串

自定义请求方法(如 PUT、DELETE、PATCH),如:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT")

注意:设置后需手动处理请求体数据。

2. 请求体数据相关

参数常量

取值类型

详细说明

CURLOPT_POSTFIELDS

字符串 / 数组 / JSON 字符串

用于传递 POST/PUT 等请求的请求体数据,常见三种场景:

1. 表单提交(

application/x-www-form-urlencoded

):传数组或 url 编码字符串(如

name=test&age=20)

2.

JSON 提交(

application/json):传 JSON 编码字符串(需配合

CURLOPT_HTTPHEADER

设置请求头)

3. 文件上传:PHP < 5.5 用 @文件路径,新版本推荐用 CURLFile 类

CURLOPT_UPLOAD

布尔值(true/false)

启用文件上传模式,配合

CURLOPT_INFILE

使用(较少用,文件上传建议优先用

CURLOPT_POSTFIELDS


三、请求头参数

用于设置 HTTP 请求头,可模拟浏览器、指定数据格式、携带认证信息等。

参数常量

取值类型

详细说明

CURLOPT_HTTPHEADER

数组

设置自定义请求头,数组每元素为一条请求头,如: "Content-Type: application/json", "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0", "Authorization: Bearer token123456"]

CURLOPT_USERPWD

字符串

HTTP 基础认证,格式为 用户名:密码,等价于请求头

Authorization: Basic {base64编码}。

CURLOPT_FOLLOWLOCATION

布尔值(true/false)

- true:自动跟随 3xx 重定向(如 301、302)

- false:不跟随(默认)

补充:最大跟随次数可用 CURLOPT_MAXREDIRS 设置。


四、HTTPS 相关参数(重点)

请求目标 URL 为 https 时,需要配置以下参数解决 SSL 证书验证问题,否则可能请求失败。

参数常量

取值类型

详细说明

CURLOPT_SSL_VERIFYPEER

布尔值(true/false)

- true:验证服务器 SSL 证书(生产环境推荐,默认)

- false:跳过证书验证(开发/测试环境可临时用,生产环境禁止,安全风险大)

CURLOPT_SSL_VERIFYHOST

整数(0/1/2)

- 2:验证证书主机名与目标一致(推荐,默认)

- 1:已废弃,无实际作用

- 0:跳过主机名验证(不推荐,存在风险)

CURLOPT_SSLCERT

字符串

客户端 SSL 证书文件路径(服务器要求客户端证书时使用)

CURLOPT_SSLKEY

字符串

客户端 SSL 证书对应的私钥文件路径

CURLOPT_SSLVERSION

整数

指定 SSL/TLS 版本,CURL_SSLVERSION_TLSv1_2

(强制用 TLS 1.2,防止因版本不兼容导致失败)


五、响应处理与调试参数

用于获取更详细的请求/响应信息,便于调试排查问题。

参数常量

取值类型

详细说明

CURLOPT_HEADERFUNCTION

回调函数

自定义响应头处理函数,可单独捕获每行响应头,避免与响应体混淆。

CURLOPT_VERBOSE

布尔值(true/false)

- true:开启详细模式,输出完整调试信息(包括连接、请求头、响应头等)

- false:关闭(默认)
补充:建议配合 CURLOPT_STDERR,将调试信息写入文件,避免输出到页面。

CURLOPT_STDERR

资源句柄

将 CURLOPT_VERBOSE

产生的调试信息写入指定文件,如:

curl_setopt($ch, CURLOPT_STDERR, fopen('curl_debug.log', 'w'));


六、其他常用辅助参数

参数常量

取值类型

详细说明

CURLOPT_COOKIE

字符串

携带 Cookie 信息,格式如key1=value1; key2=value2。

CURLOPT_COOKIEJAR

字符串

请求结束后,将服务器返回的 Cookie 保存到指定文件路径。

CURLOPT_COOKIEFILE

字符串

从指定文件读取 Cookie 并携带到请求中,实现会话保持。

CURLOPT_PROXY

字符串

设置代理服务器,格式如http://代理IP:端口或socks5://代理IP:端口。

CURLOPT_NOBODY

布尔值(true/false)

- true:仅发送请求头,不获取响应体(常用于

HEAD 请求,检测资源是否存在)

- false:获取完整响应体(默认)


七、完整可运行示例(整合核心参数)

<?php // 1. 初始化 cURL 句柄 $ch = curl_init(); // 2. 设置核心参数 $targetUrl = "https://api.example.com/user"; curl_setopt($ch, CURLOPT_URL, $targetUrl); // 目标 URL curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 结果以字符串返回 curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 整体超时 30 秒 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // 连接超时 10 秒 // 3. 设置 HTTPS 相关(开发环境临时跳过证书验证,生产环境请删除这两行) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 4. 设置请求方法与请求体(POST + JSON 格式) curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); // POST 方法(也可直接用 CURLOPT_POST => true) $postData = [ "name" => "测试用户", "age" => 25 ]; curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData)); // JSON 编码请求体 // 5. 设置请求头 curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/json", "User-Agent: PHP-CURL/7.4", "Authorization: Bearer your_token_here" ]); // 6. 执行请求并获取结果 $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 获取响应状态码(200 表示成功) // 7. 错误处理 if (curl_errno($ch)) { $errorMsg = curl_error($ch); echo "cURL 请求失败:" . $errorMsg; } else { echo "响应状态码:" . $httpCode . "<br>"; echo "响应结果:" . $response; } // 8. 关闭 cURL 句柄,释放资源 curl_close($ch); ?>

总结

  • cURL 参数设置核心在于 curl_setopt(),建议按功能分类记忆。优先掌握「核心基础参数」「HTTPS 相关参数」「请求体 / 请求头参数」。
  • CURLOPT_RETURNTRANSFER = true 是获取响应结果的关键。生产环境下 HTTPS 请求务必保留证书验证,开发环境可临时跳过。
  • 不同请求格式(表单/JSON)需对应配置 CURLOPT_POSTFIELDS 和 Content-Type 请求头。调试时可启用 CURLOPT_VERBOSE 查看详细日志。

如需查阅更多参数或遇到疑问,欢迎留言交流!
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 6:43:29

AI大模型学习必知:提示词工程-Prompt Engineering

prompt&#xff08;提示词&#xff09;是我们和 LLM 互动最常用的方式&#xff0c;我们提供给 LLM 的 Prompt 作为模型的输入&#xff0c;并希望 LLM 反馈我们期待的结果。 虽然 LLM 的功能非常强大&#xff0c;但 LLM 对提示词&#xff08;prompt&#xff09;也非常敏感。这使…

作者头像 李华
网站建设 2026/5/20 14:43:29

教育科研新革命:书匠策AI如何用“数据魔法”让论文写作脱胎换骨

在教育科研的江湖里&#xff0c;数据分析是让论文从“空泛论述”跃升为“实证研究”的关键一跃。但面对SPSS的复杂语法、Python的报错焦虑、Excel的图表局限&#xff0c;许多教育研究者常常陷入“技术困境”——明明有好的研究问题&#xff0c;却因数据分析能力不足而功亏一篑。…

作者头像 李华
网站建设 2026/5/22 13:44:52

【图像加密】Secure Force 对称密钥算法的性能评估(针对无线传感器网络 WSN 的低复杂度加密算法)附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

作者头像 李华
网站建设 2026/5/26 11:23:23

SAP Fiori开发学习路线指南

以下是为你整理的SAP Fiori开发入门路线与实践指南&#xff0c;涵盖了从基础知识到实际开发的学习路径、关键资源及核心建议。 &#x1f4da; 第一阶段&#xff1a;入门与基础 (第1-2个月) 本阶段目标是建立知识框架&#xff0c;了解Fiori是什么、能做什么。 学习目标核心内…

作者头像 李华
网站建设 2026/5/20 16:45:22

嵌入式AI测试:汽车ECU软件的实时性验证

一、实时性验证的核心挑战 在汽车电子领域&#xff0c;实时性并非单纯指执行速度&#xff0c;而是指系统在确定性时间阈值内完成关键任务的能力。例如自动紧急制动系统&#xff08;AEB&#xff09;要求刹车信号从检测到执行需在200ms内完成&#xff0c;涉及多ECU协同与总线传输…

作者头像 李华
网站建设 2026/5/27 9:06:45

单相交流稳压电路的Matlab仿真探索

单相交流稳压电路 仿真及其详细的文字说明工作原理参数设计仿真说明结论心得等。 。matlab2021b一、引言 在电力系统中&#xff0c;电压稳定对于各种电气设备的正常运行至关重要。单相交流稳压电路能够有效维持输出电压的稳定&#xff0c;为负载提供可靠的电能。本文将借助Matl…

作者头像 李华