首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

curl_setopt

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_setopt - 为cURL传输设置一个选项

描述

代码语言:javascript
复制
bool curl_setopt ( resource $ch , int $option , mixed $value )

在给定的cURL会话句柄上设置一个选项。

参数

ch

由curl_init()返回的cURL句柄。

option

要设置的CURLOPT_XXX选项。

value

要设置的值option

value应该是以下option参数值的bool :

选项

将值设置为

笔记

CURLOPT_AUTOREFERER

如果是自动设置Referer:字段的请求位置:重定向,则为TRUE。

?

CURLOPT_BINARYTRANSFER

如果使用CURLOPT_RETURNTRANSFER,则返回原始输出。

从PHP 5.1.3开始,此选项不起作用:使用CURLOPT_RETURNTRANSFER时始终返回原始输出。

CURLOPT_COOKIESESSION

如果将其标记为新的cookie“会话”,则为TRUE。它将强制libcurl忽略所有即将加载来自前一个会话的“会话cookie”的cookie。默认情况下,libcurl总是存储和加载所有的cookie,如果它们是会话cookie,则独立。会话cookie是没有失效日期的cookies,它们只是为了这个“会话”而存在并存在。

?

CURLOPT_CERTINFO

TRUE在安全传输中向STDERR输出SSL认证信息。

在cURL 7.19.1中添加。自PHP 5.3.2起可用。需要CURLOPT_VERBOSE才能起作用。

CURLOPT_CONNECT_ONLY

TRUE指示库执行所有必需的代理验证和连接设置,但不进行数据传输。这个选项是为HTTP,SMTP和POP3实现的。

在7.15.2中添加。自PHP 5.5.0起可用。

CURLOPT_CRLF

TRUE将Unix换行符转换为CRLF换行符。

?

CURLOPT_DNS_USE_GLOBAL_CACHE

为真使用全局DNS缓存。此选项不是线程安全的,并且默认情况下处于启用状态。

?

CURLOPT_FAILONERROR

如果返回的HTTP代码大于或等于400,则返回TRUE以使其失败。默认行为是正常返回页面,忽略代码。

?

CURLOPT_SSL_FALSESTART

为真以启用TLS错误启动。

在cURL 7.42.0中添加。自PHP 7.0.7起可用。

CURLOPT_FILETIME

TRUE尝试检索远程文档的修改日期。使用curl_getinfo()的CURLINFO_FILETIME选项可以检索此值。

?

CURLOPT_FOLLOWLOCATION

如果没有设置CURLOPT_MAXREDIRS,那么服务器会发送一个“Location:”标题作为HTTP标头的一部分(请注意,这是递归的,PHP将遵循它发送的尽可能多的“Location:”标头)。

?

CURLOPT_FORBID_REUSE

TRUE强制连接在完成处理时显式关闭,而不是合并重用。

?

CURLOPT_FRESH_CONNECT

TRUE强制使用新的连接而不是缓存的连接。

?

CURLOPT_FTP_USE_EPRT

在进行主动FTP下载时,请使用EPRT(和LPRT)。使用FALSE禁用EPRT和LPRT并仅使用PORT。

?

CURLOPT_FTP_USE_EPSV

在返回到PASV之前,首先尝试使用EPSV命令进行FTP传输。设置为FALSE以禁用EPSV。

?

CURLOPT_FTP_CREATE_MISSING_DIRS

如果FTP操作遇到当前不存在的路径,则为TRUE以创建丢失的目录。

?

CURLOPT_FTPAPPEND

如果是附加到远程文件而不是覆盖它,则为TRUE。

?

CURLOPT_TCP_NODELAY

TRUE可以禁用TCP的Nagle算法,该算法会尽量减少网络上小数据包的数量。

对于使用libcurl 7.11.2或更高版本编译的版本,自PHP 5.2.1起可用。

CURLOPT_FTPASCII

CURLOPT_TRANSFERTEXT的别名。改为使用它。

?

CURLOPT_FTPLISTONLY

TRUE仅列出FTP目录的名称。

?

CURLOPT_HEADER

为真以在输出中包含标题。

?

CURLINFO_HEADER_OUT

TRUE来跟踪句柄的请求字符串。

自PHP 5.1.3起可用。CURLINFO_前缀是故意的。

CURLOPT_HTTPGET

如果将HTTP请求方法重置为GET,则为TRUE。由于GET是默认设置,因此只有在请求方法已更改时才需要。

?

CURLOPT_HTTPPROXYTUNNEL

TRUE隧道通过给定的HTTP代理。

?

CURLOPT_MUTE

对于cURL函数,应该完全保持沉默。

在cURL 7.15.5中删除(您可以使用CURLOPT_RETURNTRANSFER)

CURLOPT_NETRC

TRUE扫描?/ .netrc文件以查找建立连接的远程站点的用户名和密码。

?

CURLOPT_NOBODY

TRUE从输出中排除主体。请求方法然后设置为HEAD。将其更改为FALSE不会将其更改为GET。

?

CURLOPT_NOPROGRESS

如果为cURL传输禁用进度表,则为TRUE。注意:PHP会自动将此选项设置为TRUE,因此只能针对调试目的进行更改。

?

CURLOPT_NOSIGNAL

TRUE忽略任何导致信号发送到PHP进程的cURL函数。这在多线程SAPI中默认打开,所以仍然可以使用超时选项。

在cURL 7.10中添加。

CURLOPT_PATH_AS_IS

如果不处理点点序列,则为TRUE。

在cURL 7.42.0中添加。自PHP 7.0.7起可用。

CURLOPT_PIPEWAIT

为真等待流水线/复用。

在cURL 7.43.0中添加。自PHP 7.0.7起可用。

CURLOPT_POST

真正做一个普通的HTTP POST。此POST是普通的应用程序/ x-www-form-urlencoded类型,最常用的是HTML表单。

?

CURLOPT_PUT

对HTTP正确PUT一个文件。PUT文件必须使用CURLOPT_INFILE和CURLOPT_INFILESIZE进行设置。

?

CURLOPT_RETURNTRANSFER

TRUE将返回值作为curl_exec()的返回值的字符串返回,而不是直接输出。

?

CURLOPT_SAFE_UPLOAD

TRUE可禁用对@前缀的支持,以便在CURLOPT_POSTFIELDS中上传文件,这意味着以@开头的值可以安全地作为字段传递。CURLFile可能用于上传。

在PHP 5.5.0中添加了FALSE作为默认值。PHP 5.6.0将默认值更改为TRUE。PHP 7删除了这个选项; 必须使用CURLFile接口来上传文件。

CURLOPT_SASL_IR

TRUE以启用在第一个数据包中发送初始响应。

在cURL 7.31.10中添加。自PHP 7.0.7起可用。

CURLOPT_SSL_ENABLE_ALPN

FALSE在SSL握手中禁用ALPN(如果SSL后端libcurl构建为支持它),可用于协商http2。

在cURL 7.36.0中添加。自PHP 7.0.7起可用。

CURLOPT_SSL_ENABLE_NPN

FALSE在SSL握手中禁用NPN(如果SSL后端libcurl构建为支持它),可用于协商http2。

在cURL 7.36.0中添加。自PHP 7.0.7起可用。

CURLOPT_SSL_VERIFYPEER

FALSE停止cURL验证对等方的证书。可以使用CURLOPT_CAINFO选项指定要验证的替代证书,也可以使用CURLOPT_CAPATH选项指定证书目录。

从cURL 7.10开始默认为TRUE。从cURL 7.10开始安装默认软件包。

CURLOPT_SSL_VERIFYSTATUS

为真来验证证书的状态。

在cURL 7.41.0中添加。自PHP 7.0.7起可用。

CURLOPT_TCP_FASTOPEN

为启用TCP快速打开。

在cURL 7.49.0中添加。自PHP 7.0.7起可用。

CURLOPT_TFTP_NO_OPTIONS

为真,不发送TFTP选项请求。

在cURL 7.48.0中添加。自PHP 7.0.7起可用。

CURLOPT_TRANSFERTEXT

对于FTP传输使用ASCII模式为真。对于LDAP,它以纯文本而不是HTML检索数据。在Windows系统上,它不会将STDOUT设置为二进制模式。

?

CURLOPT_UNRESTRICTED_AUTH

在下列位置(使用CURLOPT_FOLLOWLOCATION)时,即使主机名已更改,也会继续发送用户名和密码。

?

CURLOPT_UPLOAD

真正准备上传。

?

CURLOPT_VERBOSE

为真以输出详细信息。将输出写入STDERR或使用CURLOPT_STDERR指定的文件。

?

value应该是以下option参数值的整数:

选项

将值设置为

笔记

CURLOPT_BUFFERSIZE

每次读取使用的缓冲区的大小。然而,不能保证这个请求会被满足。

在cURL 7.10中添加。

CURLOPT_CLOSEPOLICY

其中一个CURLCLOSEPOLICY_ *值。注意:此选项已弃用,因为它从未在cURL中实施过,因此从未产生任何影响。

在PHP 5.6.0中删除。

CURLOPT_CONNECTTIMEOUT

尝试连接时等待的秒数。使用0等待无限期。

?

CURLOPT_CONNECTTIMEOUT_MS

尝试连接时等待的毫秒数。使用0等待无限期。如果构建libcurl以使用标准系统名称解析器,那么连接的该部分仍将使用全秒分辨率超时,且允许的最小超时时间为1秒。

在cURL 7.16.2中添加。自PHP 5.2.3起可用。

CURLOPT_DNS_CACHE_TIMEOUT

将DNS条目保留在内存中的秒数。该选项默认设置为120(2分钟)。

?

CURLOPT_EXPECT_100_TIMEOUT_MS

Expect:100的超时 - 以毫秒为单位继续响应。默认为1000毫秒。

在cURL 7.36.0中添加。自PHP 7.0.7起可用。

CURLOPT_FTPSSLAUTH

FTP身份验证方法(何时激活):CURLFTPAUTH_SSL(先尝试SSL),CURLFTPAUTH_TLS(先尝试TLS)或CURLFTPAUTH_DEFAULT(让cURL决定)。

在cURL 7.12.2中添加。

CURLOPT_HEADEROPT

如何处理标题。以下常量之一:CURLHEADER_UNIFIED:CURLOPT_HTTPHEADER中指定的标头将用于对服务器和代理的请求中。启用此选项后,CURLOPT_PROXYHEADER将不起作用。CURLHEADER_SEPARATE:使CURLOPT_HTTPHEADER标题只发送给服务器而不发送给代理。代理头文件必须使用CURLOPT_PROXYHEADER来设置才能使用。请注意,如果将非CONNECT请求发送到代理,libcurl将同时发送服务器标头和代理标头。在进行CONNECT时,libcurl会将CURLOPT_PROXYHEADER标头仅发送给代理,然后将CURLOPT_HTTPHEADER标头仅发送给服务器。从cURL 7.42.1开始默认为CURLHEADER_SEPARATE,之前为CURLHEADER_UNIFIED。

在cURL 7.37.0中添加。自PHP 7.0.7起可用。

CURLOPT_HTTP_VERSION

CURL_HTTP_VERSION_NONE(默认情况下,让CURL决定使用哪个版本),CURL_HTTP_VERSION_1_0(强制HTTP / 1.0)或CURL_HTTP_VERSION_1_1(强制HTTP / 1.1)。

?

CURLOPT_HTTPAUTH

要使用的HTTP身份验证方法。选项包括:CURLAUTH_BASIC,CURLAUTH_DIGEST,CURLAUTH_GSSNEGOTIATE,CURLAUTH_NTLM,CURLAUTH_ANY和CURLAUTH_ANYSAFE。按位| (或)运算符可用于组合多个方法。如果这样做了,cURL将轮询服务器以查看它支持的方法并选择最好的方法。CURLAUTH_ANY是CURLAUTH_BASIC |的别名 CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM。CURLAUTH_ANYSAFE是CURLAUTH_DIGEST |的别名 CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM。

?

CURLOPT_INFILESIZE

将文件上传到远程站点时文件的预期大小(以字节为单位)。请注意,使用此选项不会阻止libcurl发送更多数据,因为发送的内容取决于CURLOPT_READFUNCTION。

?

CURLOPT_LOW_SPEED_LIMIT

传输速度(以每秒字节数为单位),在PHP认为传输速度太慢并中止之前CURLOPT_LOW_SPEED_TIME秒的计数期间传输应该低于传输速度。

?

CURLOPT_LOW_SPEED_TIME

在PHP认为传输速度太慢并中止之前,传输速度应低于CURLOPT_LOW_SPEED_LIMIT的秒数。

?

CURLOPT_MAXCONNECTS

允许的最大永久连接数量。达到限制时,CURLOPT_CLOSEPOLICY用于确定要关闭哪个连接。

?

CURLOPT_MAXREDIRS

遵循的最大HTTP重定向量。与CURLOPT_FOLLOWLOCATION一起使用此选项。

?

CURLOPT_PORT

一个可供选择的端口号。

?

CURLOPT_POSTREDIR

如果在设置CURLOPT_FOLLOWLOCATION并且发生特定类型的重定向时应该维护HTTP POST方法,则位掩码为1(301永久移动),2(302 Found)和4(303 See Other)。

在cURL 7.19.1中添加。自PHP 5.3.2起可用。

CURLOPT_PROTOCOLS

CURLPROTO_ *值的位掩码。如果使用,该位掩码限制了libcurl可能在传输中使用的协议。这使您可以构建一个libcurl来支持各种协议,但仍限制特定的传输,只允许使用它们的一部分。默认情况下,libcurl将接受它支持的所有协议。另见CURLOPT_REDIR_PROTOCOLS。有效的协议选项包括:CURLPROTO_HTTP,CURLPROTO_HTTPS,CURLPROTO_FTP,CURLPROTO_FTPS,CURLPROTO_SCP,CURLPROTO_SFTP,CURLPROTO_TELNET,CURLPROTO_LDAP,CURLPROTO_LDAPS,CURLPROTO_DICT,CURLPROTO_FILE,CURLPROTO_TFTP,CURLPROTO_ALL

在cURL 7.19.4中添加。

CURLOPT_PROXYAUTH

用于代理连接的HTTP身份验证方法。使用与CURLOPT_HTTPAUTH中所述相同的位掩码。对于代理验证,目前仅支持CURLAUTH_BASIC和CURLAUTH_NTLM。

在cURL 7.10.7中添加。

CURLOPT_PROXYPORT

要连接的代理的端口号。此端口号也可以在CURLOPT_PROXY中设置。

?

CURLOPT_PROXYTYPE

CURLPROXY_HTTP(默认),CURLPROXY_SOCKS4,CURLPROXY_SOCKS5,CURLPROXY_SOCKS4A或CURLPROXY_SOCKS5_HOSTNAME。

在cURL 7.10中添加。

CURLOPT_REDIR_PROTOCOLS

CURLPROTO_ *值的位掩码。如果使用该位掩码,则在启用CURLOPT_FOLLOWLOCATION时,libcurl可以在传输中使用的协议限制在重定向中使用的协议。这允许您限制特定的传输,只允许在重定向中使用协议子集。默认情况下,libcurl将允许除FILE和SCP之外的所有协议。与7.19.4之前的版本相比,这是一个差别,无条件地遵循所有支持的协议。协议常量值参见CURLOPT_PROTOCOLS。

在cURL 7.19.4中添加。

CURLOPT_RESUME_FROM

以字节为单位的偏移量,用于恢复传输。

?

CURLOPT_SSL_OPTIONS

设置SSL行为选项,它是以下任何常量的位掩码:CURLSSLOPT_ALLOW_BEAST:不要尝试对SSL3和TLS1.0协议中的安全漏洞使用任何解决方法。CURLSSLOPT_NO_REVOKE:对存在此类行为的SSL后端禁用证书吊销检查。

在cURL 7.25.0中添加。自PHP 7.0.7起可用。

CURLOPT_SSL_VERIFYHOST

1检查SSL对等证书中是否存在公共名称。2检查是否存在通用名称,并验证它是否与提供的主机名相匹配。0不检查名称。在生产环境中,此选项的值应保持为2(默认值)。

支持在cURL 7.28.1中删除了值1。

CURLOPT_SSLVERSION

CURL_SSLVERSION_DEFAULT(0),CURL_SSLVERSION_TLSv1(1),CURL_SSLVERSION_SSLv2(2),CURL_SSLVERSION_SSLv3(3),CURL_SSLVERSION_TLSv1_0(4),CURL_SSLVERSION_TLSv1_1(5)或CURL_SSLVERSION_TLSv1_2(6)中的一个。注意:你最好的选择是不设置它,让它使用默认值。考虑到SSLv2和SSLv3中已知的漏洞,将其设置为2或3是非常危险的。

?

CURLOPT_STREAM_WEIGHT

设置数字流权重(1到256之间的数字)。

在cURL 7.46.0中添加。自PHP 7.0.7起可用。

CURLOPT_TIMECONDITION

如何处理CURLOPT_TIMEVALUE。仅当CURL_TIMECOND_IFMODSINCE自CURLOPT_TIMEVALUE中指定的时间后被修改时,才返回页面。如果它未被修改,则假定CURLOPT_HEADER为TRUE,将返回“304未修改”头。使用CURL_TIMECOND_IFUNMODSINCE作为反向效果。CURL_TIMECOND_IFMODSINCE是默认值。

?

CURLOPT_TIMEOUT

允许执行cURL函数的最大秒数。

?

CURLOPT_TIMEOUT_MS

允许cURL函数执行的最大毫秒数。如果构建libcurl以使用标准系统名称解析器,那么连接的该部分仍将使用全秒分辨率超时,且允许的最小超时时间为1秒。

在cURL 7.16.2中添加。自PHP 5.2.3起可用。

CURLOPT_TIMEVALUE

自1970年1月1日以来的秒数。该时间将由CURLOPT_TIMECONDITION使用。默认情况下,使用CURL_TIMECOND_IFMODSINCE。

?

CURLOPT_MAX_RECV_SPEED_LARGE

如果在传输过程中下载速度超过此速度(以每秒字节数计),则传输将暂停以保持平均速率小于或等于参数值。默认为无限速度。

在cURL 7.15.5中添加。自PHP 5.4.0起可用。

CURLOPT_MAX_SEND_SPEED_LARGE

如果在传输过程中,累计平均上传速度超过此速度(以每秒字节数计),传输将暂停以保持平均速率小于或等于参数值。默认为无限速度。

在cURL 7.15.5中添加。自PHP 5.4.0起可用。

CURLOPT_SSH_AUTH_TYPES

由一个或多个CURLSSH_AUTH_PUBLICKEY,CURLSSH_AUTH_PASSWORD,CURLSSH_AUTH_HOST,CURLSSH_AUTH_KEYBOARD组成的位掩码。设置为CURLSSH_AUTH_ANY让libcurl选择一个。

在cURL 7.16.1中添加。

CURLOPT_IPRESOLVE

允许应用程序选择在解析主机名时使用何种类型的IP地址。这仅在使用使用多个IP版本解析地址的主机名称时才有意义,可能的值为CURL_IPRESOLVE_WHATEVER,CURL_IPRESOLVE_V4,CURL_IPRESOLVE_V6,默认情况下为CURL_IPRESOLVE_WHATEVER。

在cURL 7.10.8中添加。

CURLOPT_FTP_FILEMETHOD

告诉curl使用哪种方法到达FTP(S)服务器上的文件。可能的值是CURLFTPMETHOD_MULTICWD,CURLFTPMETHOD_NOCWD和CURLFTPMETHOD_SINGLECWD。

在cURL 7.15.1中添加。自PHP 5.3.0起可用。

value应该是以下option参数值的字符串:

选项

将值设置为

笔记

CURLOPT_CAINFO

持有一个或多个证书以验证对等的文件的名称。这仅在与CURLOPT_SSL_VERIFYPEER组合使用时才有意义。

可能需要绝对路径。

CURLOPT_CAPATH

一个包含多个CA证书的目录。与CURLOPT_SSL_VERIFYPEER一起使用此选项。

?

CURLOPT_COOKIE

要在HTTP请求中使用的“Cookie:”标头的内容。请注意,多个Cookie以分号加空格分隔(例如,“fruit = apple; color = red”)

?

CURLOPT_COOKIEFILE

包含Cookie数据的文件的名称。cookie文件可以是Netscape格式,也可以是简单的HTTP风格的头文件转储到文件中。如果该名称是一个空字符串,则不会加载cookie,但cookie处理仍处于启用状态。

?

CURLOPT_COOKIEJAR

保存所有内部cookie到文件名称,例如在curl_close调用之后。

?

CURLOPT_CUSTOMREQUEST

在执行HTTP请求时使用自定义请求方法而不是“GET”或“HEAD”。这对于执行“DELETE”或其他更晦涩的HTTP请求很有用。有效值是“GET”,“POST”,“CONNECT”等等; 即不要在这里输入一个完整的HTTP请求行。例如,输入“GET /index.html HTTP / 1.0 \ r \ n \ r \ n”将不正确。注意:不要确保服务器首先支持自定义请求方法,否则不要这样做。

?

CURLOPT_DEFAULT_PROTOCOL

如果URL缺少方案名称,则使用默认协议。

在cURL 7.45.0中添加。自PHP 7.0.7起可用。

CURLOPT_DNS_INTERFACE

设置DNS解析器应绑定到的网络接口的名称。这必须是接口名称(不是地址)。

在cURL 7.33.0中添加。自PHP 7.0.7起可用。

CURLOPT_DNS_LOCAL_IP4

设置解析器应绑定到的本地IPv4地址。该参数应该包含单个数字IPv4地址作为字符串。

在cURL 7.33.0中添加。自PHP 7.0.7起可用。

CURLOPT_DNS_LOCAL_IP6

设置解析器应绑定的本地IPv6地址。该参数应该包含一个数字的IPv6地址作为字符串。

在cURL 7.33.0中添加。自PHP 7.0.7起可用。

CURLOPT_EGDSOCKET

与CURLOPT_RANDOM_FILE一样,除了Entropy Gathering Daemon套接字的文件名外。

?

CURLOPT_ENCODING

“Accept-Encoding:”标题的内容。这使解码的响应。支持的编码是“身份”,“放气”和“gzip”。如果设置了空字符串“”,则会发送包含所有支持的编码类型的标头。

在cURL 7.10中添加。

CURLOPT_FTPPORT

将用于获取IP地址用于FTP“PORT”指令的值。“PORT”指令告诉远程服务器连接到我们指定的IP地址。字符串可以是普通IP地址,主机名,网络接口名称(在Unix下),或者只是一个普通的' - '来使用系统默认IP地址。

?

CURLOPT_INTERFACE

要使用的传出网络接口的名称。这可以是接口名称,IP地址或主机名。

?

CURLOPT_KEYPASSWD

使用CURLOPT_SSLKEY或CURLOPT_SSH_PRIVATE_KEYFILE私钥所需的密码。

在cURL 7.16.1中添加。

CURLOPT_KRB4LEVEL

KRB4(Kerberos 4)安全级别。以下任何值(从最小到最强大的顺序)都是有效的:“清除”,“安全”,“机密”,“私人”。如果字符串不符合其中之一,则使用“私人”。将此选项设置为NULL将禁用KRB4安全性。目前KRB4安全性仅适用于FTP交易。

?

CURLOPT_LOGIN_OPTIONS

可以用于设置协议特定的登录选项,例如通过“AUTH = NTLM”或“AUTH = *”的首选身份验证机制,并且应该与CURLOPT_USERNAME选项一起使用。

在cURL 7.34.0中添加。自PHP 7.0.7起可用。

CURLOPT_PINNEDPUBLICKEY

设置固定公钥。该字符串可以是固定公钥的文件名。预期的文件格式是“PEM”或“DER”。该字符串也可以是以“sha256 //”开头并以“;”分隔的任意数量的base64编码sha256哈希。

在cURL 7.39.0中添加。自PHP 7.0.7起可用。

CURLOPT_POSTFIELDS

完整的数据在HTTP“POST”操作中发布。要发布文件,请使用@预先指定文件名并使用完整路径。文件类型可以通过跟随具有格式'; type = mimetype'格式的文件名来显式指定。此参数可以作为urlencoded字符串(如'para1 =val1?2=val2?...')传递,也可以作为字段名称作为键和字段数据作为值的数组传递。如果value是一个数组,则Content-Type头将被设置为multipart / form-data。从PHP 5.2.0开始,如果使用@前缀将文件传递给此选项,则值必须是数组。从PHP 5.5.0开始,@前缀已弃用,可以使用CURLFile发送文件。通过将CURLOPT_SAFE_UPLOAD选项设置为TRUE,可以禁止@前缀以安全传递以@开头的值。

?

CURLOPT_PRIVATE

任何应该与此cURL句柄关联的数据。随后可以使用curl_getinfo()的CURLINFO_PRIVATE选项来检索此数据。cURL对此数据不做任何处理。当使用cURL多重句柄时,这个私有数据通常是识别标准cURL句柄的唯一键。

在cURL 7.10.3中添加。

CURLOPT_PROXY

通过隧道传输请求的HTTP代理。

?

CURLOPT_PROXY_SERVICE_NAME

代理验证服务名称。

在cURL 7.34.0中添加。自PHP 7.0.7起可用。

CURLOPT_PROXYUSERPWD

用户名和密码格式为“用户名:密码”用于连接到代理。

?

CURLOPT_RANDOM_FILE

用于为SSL生成随机数生成器的文件名。

?

CURLOPT_RANGE

以“XY”格式检索的数据范围,其中X或Y是可选的。HTTP传输也支持多个时间间隔,用“XY,NM”格式的逗号分隔。

?

CURLOPT_REFERER

要在HTTP请求中使用的“Referer:”标头的内容。

?

CURLOPT_SERVICE_NAME

身份验证服务名称。

在cURL 7.43.0中添加。自PHP 7.0.7起可用。

CURLOPT_SSH_HOST_PUBLIC_KEY_MD5

一个包含32个十六进制数字的字符串。该字符串应该是远程主机公钥的MD5校验和,并且除非md5sums匹配,否则libcurl将拒绝与主机的连接。该选项仅适用于SCP和SFTP传输。

在cURL 7.17.1中添加。

CURLOPT_SSH_PUBLIC_KEYFILE

公钥的文件名。如果不使用,如果HOME环境变量已设置,则libcurl默认为$ HOME / .ssh / id_dsa.pub;如果未设置HOME,则当前目录中只有“id_dsa.pub”。

在cURL 7.16.1中添加。

CURLOPT_SSH_PRIVATE_KEYFILE

您的私钥的文件名。如果未使用,如果设置了HOME环境变量,则libcurl默认为$ HOME / .ssh / id_dsa,如果未设置HOME,则当前目录中只有“id_dsa”。如果该文件受密码保护,请使用CURLOPT_KEYPASSWD设置密码。

在cURL 7.16.1中添加。

CURLOPT_SSL_CIPHER_LIST

用于SSL的密码列表。例如,RC4-SHA和TLSv1是有效的密码列表。

?

CURLOPT_SSLCERT

包含PEM格式化证书的文件的名称。

?

CURLOPT_SSLCERTPASSWD

使用CURLOPT_SSLCERT证书所需的密码。

?

CURLOPT_SSLCERTTYPE

证书的格式。支持的格式是“PEM”(默认),“DER”和“ENG”。

在cURL 7.9.3中添加。

CURLOPT_SSLENGINE

CURLOPT_SSLKEY中指定的私有SSL密钥的加密引擎的标识符。

?

CURLOPT_SSLENGINE_DEFAULT

用于非对称加密操作的加密引擎的标识符。

?

CURLOPT_SSLKEY

包含私有SSL密钥的文件的名称。

?

CURLOPT_SSLKEYPASSWD

使用CURLOPT_SSLKEY中指定的私有SSL密钥所需的密码。注意:由于此选项包含敏感密码,因此请记住保持PHP脚本安全。

?

CURLOPT_SSLKEYTYPE

在CURLOPT_SSLKEY中指定的私有SSL密钥的密钥类型。支持的键类型有“PEM”(默认),“DER”和“ENG”。

?

CURLOPT_UNIX_SOCKET_PATH

允许使用Unix域套接字作为连接端点并设置给定字符串的路径。

在cURL 7.40.0中添加。自PHP 7.0.7起可用。

CURLOPT_URL

要抓取的网址。当使用curl_init()初始化一个会话时,这也可以被设置。

?

CURLOPT_USERAGENT

用于HTTP请求的“User-Agent:”标头的内容。

?

CURLOPT_USERNAME

用于身份验证的用户名。

在cURL 7.19.1中添加。自PHP 5.5.0起可用。

CURLOPT_USERPWD

用于连接的用户名和密码格式为“用户名:密码”。

?

CURLOPT_XOAUTH2_BEARER

指定OAuth 2.0访问令牌。

在cURL 7.33.0中添加。自PHP 7.0.7起可用。

value应该是以下option参数值的数组:

选项

将值设置为

笔记

CURLOPT_CONNECT_TO

连接到特定的主机和端口,而不是URL的主机和端口。接受格式为HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT的字符串数组。

在cURL 7.49.0中添加。自PHP 7.0.7起可用。

CURLOPT_HTTP200ALIASES

一组HTTP 200响应,将被视为有效响应而不是错误。

在cURL 7.10.3中添加。

CURLOPT_HTTPHEADER

要在格式数组中设置的HTTP头字段数组('Content-type:text / plain','Content-length:100')

?

CURLOPT_POSTQUOTE

执行FTP请求后,在服务器上执行的一组FTP命令。

?

CURLOPT_PROXYHEADER

要传递给代理的自定义HTTP标头数组。

在cURL 7.37.0中添加。自PHP 7.0.7起可用。

CURLOPT_QUOTE

在FTP请求之前在服务器上执行的一组FTP命令。

?

CURLOPT_RESOLVE

为特定主机和端口对提供自定义地址。主机名,端口和IP地址字符串的数组,每个元素用冒号分隔。格式为:array(“example.com:80:127.0.0.1”)

在cURL 7.21.3中添加。自PHP 5.5.0起可用。

value应该是一个流资源(例如,使用fopen()),用于以下option参数值:

选项

将值设置为

CURLOPT_FILE

传输应该写入的文件。默认是STDOUT(浏览器窗口)。

CURLOPT_INFILE

上传时应该读取传输的文件。

CURLOPT_STDERR

输出错误的替代位置替代STDERR。

CURLOPT_WRITEHEADER

传输的标题部分写入的文件。

value应该是以下option参数值的有效函数或闭包的名称:

选项

将值设置为

CURLOPT_HEADERFUNCTION

回调接受两个参数。第一个是cURL资源,第二个是具有要写入的标题数据的字符串。标题数据必须由此回调书写。返回写入的字节数。

CURLOPT_PASSWDFUNCTION

一个回调接受三个参数。第一个是cURL资源,第二个是包含密码提示的字符串,第三个是最大密码长度。返回包含密码的字符串。

CURLOPT_PROGRESSFUNCTION

回调接受五个参数。第一个是cURL资源,第二个是预计要在此传输中下载的字节总数,第三个是到目前为止下载的字节数,第四个是预计要在此传输中上传的字节总数,第五个是到目前为止上传的字节数。注意:仅当CURLOPT_NOPROGRESS选项设置为FALSE时才会调用回调。返回一个非零值来中止传输。在这种情况下,传输将设置CURLE_ABORTED_BY_CALLBACK错误。

CURLOPT_READFUNCTION

一个回调接受三个参数。第一个是cURL资源,第二个是通过选项CURLOPT_INFILE提供给cURL的流资源,第三个是要读取的最大数据量。回调函数必须返回一个长度等于或小于请求数据量的字符串,通常通过从传递的流资源中读取它。它应该返回一个空字符串来发信号给EOF。

CURLOPT_WRITEFUNCTION

回调接受两个参数。第一个是cURL资源,第二个是要写入数据的字符串。数据必须由此回调保存。它必须返回写入的确切字节数,否则传输将中止并出现错误。

其他值:

选项

将值设置为

CURLOPT_SHARE

curl_share_init()的结果。使cURL句柄使用共享句柄中的数据。

返回值

TRUE成功或FALSE失败时返回。

更新日志

描述

7.0.7

Introduced CURL_HTTP_VERSION_2, CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, CURL_HTTP_VERSION_2TLS, CURL_REDIR_POST_301, CURL_REDIR_POST_302, CURL_REDIR_POST_303, CURL_REDIR_POST_ALL, CURL_VERSION_KERBEROS5, CURL_VERSION_PSL, CURL_VERSION_UNIX_SOCKETS, CURLAUTH_NEGOTIATE, CURLAUTH_NTLM_WB, CURLFTP_CREATE_DIR, CURLFTP_CREATE_DIR_NONE, CURLFTP_CREATE_DIR_RETRY, CURLHEADER_SEPARATE, CURLHEADER_UNIFIED, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLMOPT_MAX_HOST_CONNECTIONS, CURLMOPT_MAX_PIPELINE_LENGTH, CURLMOPT_MAX_TOTAL_CONNECTIONS, CURLOPT_CONNECT_TO, CURLOPT_DEFAULT_PROTOCOL, CURLOPT_DNS_INTERFACE, CURLOPT_DNS_LOCAL_IP4, CURLOPT_DNS_LOCAL_IP6, CURLOPT_EXPECT_100_TIMEOUT_MS, CURLOPT_HEADEROPT, CURLOPT_LOGIN_OPTIONS, CURLOPT_PATH_AS_IS, CURLOPT_PINNEDPUBLICKEY, CURLOPT_PIPEWAIT, CURLOPT_PROXY_SERVICE_NAME, CURLOPT_PROXYHEADER, CURLOPT_SASL_IR, CURLOPT_SERVICE_NAME, CURLOPT_SSL_ENABLE_ALPN, CURLOPT_SSL_ENABLE_NPN, CURLOPT_SSL_FALSESTART, CURLOPT_SSL_VERIFYSTATUS, CURLOPT_STREAM_WEIGHT, CURLOPT_TCP_FASTOPEN, CURLOPT_TFTP_NO_OPTIONS, CURLOPT_UNIX_SOCKET_PATH, CURLOPT_XOAUTH2_BEARER, CURLPROTO_SMB, CURLPROTO_SMBS, CURLPROXY_HTTP_1_0, CURLSSH_AUTH_AGENT and CURLSSLOPT_NO_REVOKE.

7.0.0

Support for disabling the CURLOPT_SAFE_UPLOAD option has been removed. All curl file uploads must use CURLFile.

5.6.0

CURLOPT_SAFE_UPLOAD is now TRUE by default.

5.6.0

Removed CURLOPT_CLOSEPOLICY and associated values.

5.5.0

Added the cURL resource as the first argument to the CURLOPT_PROGRESSFUNCTION callback.

5.5.0

Introduced CURLOPT_SHARE.

5.3.0

Introduced CURLOPT_PROGRESSFUNCTION.

5.2.10

Introduced CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.

5.2.4

Introduced CURLOPT_PRIVATE.

5.1.0

Introduced CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.

5.0.0

Introduced CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.

例子

Example #1 Initializing a new cURL session and fetching a web page

代码语言:javascript
复制
<?php
//?create?a?new?cURL?resource
$ch?=?curl_init();

//?set?URL?and?other?appropriate?options
curl_setopt($ch,?CURLOPT_URL,?"http://www.example.com/");
curl_setopt($ch,?CURLOPT_HEADER,?false);

//?grab?URL?and?pass?it?to?the?browser
curl_exec($ch);

//?close?cURL?resource,?and?free?up?system?resources
curl_close($ch);
?>

Example #2 Uploading file (deprecated as of PHP 5.5.0)

代码语言:javascript
复制
<?php

/*?http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/

$ch?=?curl_init();

$data?=?array('name'?=>?'Foo',?'file'?=>?'@/home/user/test.png');

curl_setopt($ch,?CURLOPT_URL,?'http://localhost/upload.php');
curl_setopt($ch,?CURLOPT_POST,?1);
curl_setopt($ch,?CURLOPT_SAFE_UPLOAD,?false);?//?required?as?of?PHP?5.6.0
curl_setopt($ch,?CURLOPT_POSTFIELDS,?$data);

curl_exec($ch);
?>

上面的例子将输出:

代码语言:javascript
复制
Array
(
    [name] => Foo
)
Array
(
    [file] => Array
        (
            [name] => test.png
            [type] => image/png
            [tmp_name] => /tmp/phpcpjNeQ
            [error] => 0
            [size] => 279
        )

)

注释

注意:传递一个数组以CURLOPT_POSTFIELDS将数据编码为multipart / form-data,同时传递一个URL编码的字符串会将数据编码为application / x-www-form-urlencoded

← curl_setopt_array

curl_share_close →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com