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 文件夹的目录称为 DIRcurl 文件夹需要位于 include 目录中,可以在其中找到 easy.hcurl.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