PHP cURL 或客户端 URL 函数用于发送 HTTP 请求并与 Web 服务器交互。它们允许您与多种类型的服务器通信,并使用一系列协议(例如 HTTP、HTTPS、FTP 等)发送和接收数据。
这些函数对于用于管理响应和向 Web 发送请求的 PHP 程序至关重要。它们在与 API 交互、下载文件和抓取 Web 时特别方便。
创建 cURL 的两个部分是 libcURL 和 cURL。
功能 | 描述 |
---|---|
cURL | cURL 允许您使用 URL 语法发送和接收数据。 |
libcURL | 这是一个库。它由 Daniel Stenberg 创建。cURL 库支持使用各种协议与其他服务器进行通信。目前支持多种协议,包括 LDAP、TPS、GOPHER、FTP、HTTP、HTTPS、FILE、HTTP POST、TELNET、DICT、HTTP PUT、FTP 上传、FTP 恢复、Kerberos、基于 HTTP 的上传、TTPS 证书、代理、cookie、HTTP 代理隧道、用户和密码认证等。 |
安装
要使用 PHP 的 cURL 功能,还需要编译 PHP --with-curl[=DIR]。保存 lib 和 include 文件夹的目录称为 DIR。curl 文件夹需要位于 include 目录中,可以在其中找到 easy.h 和 curl.h 文件。lib 目录中应该有一个名为 libcurl.a 的文件。
要求
要在 PHP 中使用 cURL 函数,必须安装 libcurl 库:
- 任何版本的 PHP 都要求 libcurl 至少为 7.10.5 版本。
- PHP 7.3.0 或更高版本需要 libcurl 版本 7.15.5 或更高版本。
- 要使用 PHP 8.0.0 或更高版本,libcurl 必须为 7.29.0 或更高版本。
运行时配置
php.ini 文件中有一些设置可以修改 cURL 的工作方式。
PHP cURL 常量
PHP cURL 常量是有用的预定义值,可用于设置设置和获取数据。以下是一些常见的常数:
CURLOPT 常量
以下常量和 Curl_setopt() 用于设置 cURL 会话的选项:
常量 | 描述 | PHP |
---|---|---|
CURLOPT_URL | 要获取的 URL。 | 3 |
CURLOPT_RETURNTRANSFER | 如果设置为 true,则响应将作为字符串返回,而不是直接输出。 | 4 |
CURLOPT_POST | 如果设置为 true,则发出 POST 请求。 | 4 |
CURLOPT_POSTFIELDS | 要在 POST 请求中发送的数据。 | 4 |
CURLOPT_FOLLOWLOCATION | 如果设置为 true,则遵循服务器发送的任何 “Location:” 标头。 | 4 |
CURLOPT_TIMEOUT | 允许 cURL 函数执行的最大秒数。 | 4 |
CURLOPT_SSL_VERIFYPEER | 如果设置为 false,则停止 cURL 验证对等体的证书。 | 4 |
CURLOPT_CAINFO | 证书颁发机构 (CA) 捆绑包的路径。 | 4 |
CURLINFO 常量
使用 curl_getinfo() 和以下常量,您可以获取有关 cURL 会话的信息:
常量 | 描述 | PHP |
---|---|---|
CURLINFO_HTTP_CODE | HTTP 响应代码。 | 4 |
CURLINFO_CONTENT_TYPE | 响应的内容类型。 | 4 |
CURLINFO_TOTAL_TIME | 上次传输的总时间。 | 4 |
CURL 错误常量
curl_errno() 和 curl_error() 与以下常量一起使用以处理错误:
常量 | 描述 | PHP |
---|---|---|
CURLE_OK | 没有错误。 | 4 |
CURLE_UNSUPPORTED_PROTOCOL | 传递给 cURL 的 URL 使用了此 libcurl 不支持的协议。 | 4 |
CURLE_FAILED_INIT | 非常早期的初始化代码失败。 | 4 |
CURLE_URL_MALFORMAT | URL 格式不正确。 | 4 |
CURLE_COULDNT_RESOLVE_HOST | 无法解析主机。未解析给定的远程主机。 | 4 |
函数列表
以下是一些常用的 PHP cURL 函数:
函数 | 描述 | PHP |
---|---|---|
curl_close | 关闭 cURL 会话 | 4.0.2 |
curl_copy_handle | 复制 cURL 句柄及其所有首选项 | 5 |
curl_errno | 返回最后一个错误号 | 4.0.3 |
curl_error | 返回包含当前会话的最后一个错误的字符串 | 4.0.3 |
curl_escape | URL 对给定的字符串进行编码 | 5.5.0 |
curl_exec | 执行 cURL 会话 | 4.0.2 |
curl_getinfo | 获取有关特定转移的信息 | 4.0.4 |
curl_init | 初始化 cURL 会话 | 4.0.2 |
curl_multi_add_handle | 将普通 cURL 句柄添加到 cURL 多句柄 | 5 |
curl_multi_close | 关闭一组 cURL 句柄 | 5 |
curl_multi_errno | 返回最后一个 multi curl 错误号 | 7.1.0 |
curl_multi_exec | 运行当前 cURL 句柄的子连接 | 5 |
curl_multi_getcontent | 如果设置了 cURL 句柄,则返回 cURL 句柄的内容CURLOPT_RETURNTRANSFER | 5 |
curl_multi_info_read | 获取有关当前转账的信息 | 5 |
curl_multi_init | 返回新的 cURL 多句柄 | 5 |
curl_multi_remove_handle | 从一组 cURL 句柄中删除多句柄 | 5 |
curl_multi_select | 等待任何 curl_multi 连接上的活动 | 5 |
curl_multi_setopt | 设置 cURL 多选项 | 5.5.0 |
curl_multi_strerror | 返回描述错误代码的字符串 | 5.5.0 |
curl_pause | 暂停和取消暂停连接 | 5.5.0 |
curl_reset | 重置 libcurl 会话句柄的所有选项 | 5.5.0 |
curl_setopt_array | 为 cURL 传输设置多个选项 | 5.1.3 |
curl_setopt | 为 cURL 传输设置选项 | 4.0.2 |
curl_share_close | 关闭 cURL 共享句柄 | 5.5.0 |
curl_share_errno | 返回最后一个共享 curl 错误号 | 7.1.0 |
curl_share_init | 初始化 cURL 共享句柄 | 5.5.0 |
curl_share_setopt | 设置 cURL 共享句柄的选项 | 5.5.0 |
curl_share_strerror | 返回描述给定错误代码的字符串 | 7.1.0 |
curl_strerror | 返回描述给定错误代码的字符串 | 5.5.0 |
curl_unescape | 解码给定的 URL 编码字符串 | 5.5.0 |
curl_upkeep | 执行任何连接维护检查 | 8.2.0 |
curl_version | 获取 cURL 版本信息 | 4.0.2 |