PHP - cURL或客户端 URL 函数


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