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