PHP

curl_setopt

curl_setopt

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

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

描述

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_CERTINFOTRUE在安全传输中向STDERR输出SSL认证信息。在cURL 7.19.1中添加。自PHP 5.3.2起可用。需要CURLOPT_VERBOSE才能起作用。
CURLOPT_CONNECT_ONLYTRUE指示库执行所有必需的代理验证和连接设置,但不进行数据传输。这个选项是为HTTP,SMTP和POP3实现的。在7.15.2中添加。自PHP 5.5.0起可用。
CURLOPT_CRLFTRUE将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_FILETIMETRUE尝试检索远程文档的修改日期。使用curl_getinfo()的CURLINFO_FILETIME选项可以检索此值。
CURLOPT_FOLLOWLOCATION如果没有设置CURLOPT_MAXREDIRS,那么服务器会发送一个“Location:”标题作为HTTP标头的一部分(请注意,这是递归的,PHP将遵循它发送的尽可能多的“Location:”标头)。
CURLOPT_FORBID_REUSETRUE强制连接在完成处理时显式关闭,而不是合并重用。
CURLOPT_FRESH_CONNECTTRUE强制使用新的连接而不是缓存的连接。
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_NODELAYTRUE可以禁用TCP的Nagle算法,该算法会尽量减少网络上小数据包的数量。对于使用libcurl 7.11.2或更高版本编译的版本,自PHP 5.2.1起可用。
CURLOPT_FTPASCIICURLOPT_TRANSFERTEXT的别名。改为使用它。
CURLOPT_FTPLISTONLYTRUE仅列出FTP目录的名称。
CURLOPT_HEADER为真以在输出中包含标题。
CURLINFO_HEADER_OUTTRUE来跟踪句柄的请求字符串。自PHP 5.1.3起可用。CURLINFO_前缀是故意的。
CURLOPT_HTTPGET如果将HTTP请求方法重置为GET,则为TRUE。由于GET是默认设置,因此只有在请求方法已更改时才需要。
CURLOPT_HTTPPROXYTUNNELTRUE隧道通过给定的HTTP代理。
CURLOPT_MUTE对于cURL函数,应该完全保持沉默。在cURL 7.15.5中删除(您可以使用CURLOPT_RETURNTRANSFER)
CURLOPT_NETRCTRUE扫描〜/ .netrc文件以查找建立连接的远程站点的用户名和密码。
CURLOPT_NOBODYTRUE从输出中排除主体。请求方法然后设置为HEAD。将其更改为FALSE不会将其更改为GET。
CURLOPT_NOPROGRESS如果为cURL传输禁用进度表,则为TRUE。注意:PHP会自动将此选项设置为TRUE,因此只能针对调试目的进行更改。
CURLOPT_NOSIGNALTRUE忽略任何导致信号发送到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_RETURNTRANSFERTRUE将返回值作为curl_exec()的返回值的字符串返回,而不是直接输出。
CURLOPT_SAFE_UPLOADTRUE可禁用对@前缀的支持,以便在CURLOPT_POSTFIELDS中上传文件,这意味着以@开头的值可以安全地作为字段传递。CURLFile可能用于上传。在PHP 5.5.0中添加了FALSE作为默认值。PHP 5.6.0将默认值更改为TRUE。PHP 7删除了这个选项; 必须使用CURLFile接口来上传文件。
CURLOPT_SASL_IRTRUE以启用在第一个数据包中发送初始响应。在cURL 7.31.10中添加。自PHP 7.0.7起可用。
CURLOPT_SSL_ENABLE_ALPNFALSE在SSL握手中禁用ALPN(如果SSL后端libcurl构建为支持它),可用于协商http2。在cURL 7.36.0中添加。自PHP 7.0.7起可用。
CURLOPT_SSL_ENABLE_NPNFALSE在SSL握手中禁用NPN(如果SSL后端libcurl构建为支持它),可用于协商http2。在cURL 7.36.0中添加。自PHP 7.0.7起可用。
CURLOPT_SSL_VERIFYPEERFALSE停止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_MSExpect:100的超时 - 以毫秒为单位继续响应。默认为1000毫秒。在cURL 7.36.0中添加。自PHP 7.0.7起可用。
CURLOPT_FTPSSLAUTHFTP身份验证方法(何时激活):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_VERSIONCURL_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_PROTOCOLSCURLPROTO_ *值的位掩码。如果使用,该位掩码限制了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_PROXYTYPECURLPROXY_HTTP(默认),CURLPROXY_SOCKS4,CURLPROXY_SOCKS5,CURLPROXY_SOCKS4A或CURLPROXY_SOCKS5_HOSTNAME。在cURL 7.10中添加。
CURLOPT_REDIR_PROTOCOLSCURLPROTO_ *值的位掩码。如果使用该位掩码,则在启用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_VERIFYHOST1检查SSL对等证书中是否存在公共名称。2检查是否存在通用名称,并验证它是否与提供的主机名相匹配。0不检查名称。在生产环境中,此选项的值应保持为2(默认值)。支持在cURL 7.28.1中删除了值1。
CURLOPT_SSLVERSIONCURL_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_KRB4LEVELKRB4(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_SSLENGINECURLOPT_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_SHAREcurl_share_init()的结果。使cURL句柄使用共享句柄中的数据。

返回值

TRUE成功或FALSE失败时返回。

更新日志

描述
7.0.7Introduced 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.0Support for disabling the CURLOPT_SAFE_UPLOAD option has been removed. All curl file uploads must use CURLFile.
5.6.0CURLOPT_SAFE_UPLOAD is now TRUE by default.
5.6.0Removed CURLOPT_CLOSEPOLICY and associated values.
5.5.0Added the cURL resource as the first argument to the CURLOPT_PROGRESSFUNCTION callback.
5.5.0Introduced CURLOPT_SHARE.
5.3.0Introduced CURLOPT_PROGRESSFUNCTION.
5.2.10Introduced CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
5.2.4Introduced CURLOPT_PRIVATE.
5.1.0Introduced CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
5.0.0Introduced 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

<?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)

<?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 ?>

上面的例子将输出:

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 →