核心内容摘要
糖糖饼干姐姐vlog最新一期:解锁生活新“甜度”,看完就想立刻出发!
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_HEADERFUNCTIONCURLOPT_TIMEOUT整数设置请求的超时时间秒超时自动终止推荐设置如 30 秒防止无限等待。
CURLOPT_CONNECTTIMEOUT整数设置连接服务器的超时时秒仅针对建立 TCP 连接阶段常与 CURLOPT_TIMEOUT 配合使用如 10 秒。
请求方法与请求体参数POST/PUT/DELETE 等默认 cURL 请求为 GET 方法。
以下参数用于修改请求方法及传递请求体数据。
请求方法相关参数常量取值类型详细说明CURLOPT_POST布尔值true/false- true请求方法设为POST常用- false不使用 POST默认CURLOPT_CUSTOMREQUEST字符串自定义请求方法如 PUT、DELETE、PATCH如curl_setopt($ch, CURLOPT_CUSTOMREQUEST, PUT)注意设置后需手动处理请求体数据。
请求体数据相关参数常量取值类型详细说明CURLOPT_POSTFIELDS字符串 / 数组 / JSON 字符串用于传递 POST/PUT 等请求的请求体数据常见三种场景
表单提交application/x-www-form-urlencoded传数组或 url 编码字符串如nametestage
JSON 提交application/json传 JSON 编码字符串需配合CURLOPT_HTTPHEADER设置请求头
文件上传PHP
5 用 文件路径新版本推荐用 CURLFile 类CURLOPT_UPLOAD布尔值true/false启用文件上传模式配合CURLOPT_INFILE使用较少用文件上传建议优先用CURLOPT_POSTFIELDS
请求头参数用于设置 HTTP 请求头可模拟浏览器、指定数据格式、携带认证信息等。
参数常量取值类型详细说明CURLOPT_HTTPHEADER数组设置自定义请求头数组每元素为一条请求头如 Content-Type: application/json, User-Agent: Mozilla/
0 (Windows NT
1
0; Win64; x
Chrome/
120.
0.
0, Authorization: Bearer token123456]CURLOPT_USERPWD字符串HTTP 基础认证格式为 用户名:密码等价于请求头Authorization: Basic {base64编码}。
CURLOPT_FOLLOWLOCATION布尔值true/false- true自动跟随 3xx 重定向如
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
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 信息格式如key1value1; key2value2。
CURLOPT_COOKIEJAR字符串请求结束后将服务器返回的 Cookie 保存到指定文件路径。
CURLOPT_COOKIEFILE字符串从指定文件读取 Cookie 并携带到请求中实现会话保持。
CURLOPT_PROXY字符串设置代理服务器格式如http://代理IP:端口或socks5://代理IP:端口。
CURLOPT_NOBODY布尔值true/false- true仅发送请求头不获取响应体常用于HEAD 请求检测资源是否存在- false获取完整响应体默认
完整可运行示例整合核心参数?php //
初始化 cURL 句柄 $ch curl_init(); //
设置核心参数 $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 秒 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,
; // 连接超时 10 秒 //
设置 HTTPS 相关开发环境临时跳过证书验证生产环境请删除这两行 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,
; //
设置请求方法与请求体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 编码请求体 //
设置请求头 curl_setopt($ch, CURLOPT_HTTPHEADER, [ Content-Type: application/json, User-Agent: PHP-CURL/
4, Authorization: Bearer your_token_here ]); //
执行请求并获取结果 $response curl_exec($ch); $httpCode curl_getinfo($ch, CURLINFO_HTTP_CODE); // 获取响应状态码200 表示成功 //
错误处理 if (curl_errno($ch)) { $errorMsg curl_error($ch); echo cURL 请求失败 . $errorMsg; } else { echo 响应状态码 . $httpCode . br; echo 响应结果 . $response; } //
关闭 cURL 句柄释放资源 curl_close($ch); ?
总结cURL 参数设置核心在于 curl_setopt()建议按功能分类记忆。
优先掌握「核心基础参数」「HTTPS 相关参数」「请求体 / 请求头参数」。
CURLOPT_RETURNTRANSFER true 是获取响应结果的关键。
生产环境下 HTTPS 请求务必保留证书验证开发环境可临时跳过。
不同请求格式表单/JSON需对应配置 CURLOPT_POSTFIELDS 和 Content-Type 请求头。
调试时可启用 CURLOPT_VERBOSE 查看详细日志。
如需查阅更多参数或遇到疑问欢迎留言交流