curl_setopt
(PHP 4 >= 4.0.2, PHP 5, PHP 7)
curl_setopt — 设置 cURL 传输选项
参数
-
ch -
由 curl_init() 返回的 cURL 句柄。
-
option -
需要设置的CURLOPT_XXX选项。
-
value -
将设置在
option选项上的值。以下
option参数的value应该被设置成 bool 类型:选项 将 value设置为备注 CURLOPT_AUTOREFERERTRUE时将根据 Location: 重定向时,自动设置 header 中的Referer:信息。CURLOPT_BINARYTRANSFER设为 TRUE,将在启用CURLOPT_RETURNTRANSFER时,返回原生的(Raw)输出。从 PHP 5.1.3 开始,此选项不再有效果:使用 CURLOPT_RETURNTRANSFER后总是会返回原生的(Raw)内容。CURLOPT_COOKIESESSION设为 TRUE时将开启新的一次 cookie 会话。它将强制 libcurl 忽略之前会话时存的其他 cookie。 libcurl 在默认状况下无论是否为会话,都会储存、加载所有 cookie。会话 cookie 是指没有过期时间,只存活在会话之中。CURLOPT_CERTINFOTRUE将在安全传输时输出 SSL 证书信息到 STDERR。在 cURL 7.19.1 中添加。 PHP 5.3.2 后有效。 需要开启 CURLOPT_VERBOSE才有效。CURLOPT_CONNECT_ONLYTRUE将让库执行所有需要的代理、验证、连接过程,但不传输数据。此选项用于 HTTP、SMTP 和 POP3。在 7.15.2 中添加。 PHP 5.5.0 起有效。 CURLOPT_CRLF启用时将Unix的换行符转换成回车换行符。 CURLOPT_DNS_USE_GLOBAL_CACHETRUE会启用一个全局的DNS缓存。此选项非线程安全的,默认已开启。CURLOPT_FAILONERROR当 HTTP 状态码大于等于 400, TRUE将将显示错误详情。 默认情况下将返回页面,忽略 HTTP 代码。CURLOPT_SSL_FALSESTARTTRUE开启 TLS False Start (一种 TLS 握手优化方式)cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。 CURLOPT_FILETIMETRUE时,会尝试获取远程文档中的修改时间信息。 信息可通过curl_getinfo()函数的CURLINFO_FILETIME选项获取。CURLOPT_FOLLOWLOCATIONTRUE时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。(注意:这是递归的,"Location: " 发送几次就重定向几次,除非设置了CURLOPT_MAXREDIRS,限制最大重定向次数。)。CURLOPT_FORBID_REUSETRUE在完成交互以后强制明确的断开连接,不能在连接池中重用。CURLOPT_FRESH_CONNECTTRUE强制获取一个新的连接,而不是缓存中的连接。CURLOPT_FTP_USE_EPRTTRUE时,当 FTP 下载时,使用 EPRT (和 LPRT)命令。 设置为FALSE时禁用 EPRT 和 LPRT,仅仅使用PORT 命令。CURLOPT_FTP_USE_EPSVTRUE时,在FTP传输过程中,回到 PASV 模式前,先尝试 EPSV 命令。设置为FALSE时禁用 EPSV。CURLOPT_FTP_CREATE_MISSING_DIRSTRUE时,当 ftp 操作不存在的目录时将创建它。CURLOPT_FTPAPPENDTRUE为追加写入文件,而不是覆盖。CURLOPT_TCP_NODELAYTRUE时禁用 TCP 的 Nagle 算法,就是减少网络上的小包数量。PHP 5.2.1 有效,编译时需要 libcurl 7.11.2 及以上。 CURLOPT_FTPASCIICURLOPT_TRANSFERTEXT的别名。CURLOPT_FTPLISTONLYTRUE时只列出 FTP 目录的名字。CURLOPT_HEADER启用时会将头文件的信息作为数据流输出。 CURLINFO_HEADER_OUTTRUE时追踪句柄的请求字符串。从 PHP 5.1.3 开始可用。 CURLINFO_的前缀是有意的(intentional)。CURLOPT_HTTPGETTRUE时会设置 HTTP 的 method 为 GET,由于默认是 GET,所以只有 method 被修改时才需要这个选项。CURLOPT_HTTPPROXYTUNNELTRUE会通过指定的 HTTP 代理来传输。CURLOPT_MUTETRUE时将完全静默,无论是何 cURL 函数。在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作为代替) CURLOPT_NETRCTRUE时,在连接建立时,访问~/.netrc文件获取用户名和密码来连接远程站点。CURLOPT_NOBODYTRUE时将不输出 BODY 部分。同时 Mehtod 变成了 HEAD。修改为FALSE时不会变成 GET。CURLOPT_NOPROGRESSTRUE时关闭 cURL 的传输进度。Note:
PHP 默认自动设置此选项为
TRUE,只有为了调试才需要改变设置。CURLOPT_NOSIGNALTRUE时忽略所有的 cURL 传递给 PHP 进行的信号。在 SAPI 多线程传输时此项被默认启用,所以超时选项仍能使用。cURL 7.10时被加入。 CURLOPT_PATH_AS_ISTRUE不处理 dot dot sequences (即 ../ )cURL 7.42.0 时被加入。 PHP 7.0.7 起有效。 CURLOPT_PIPEWAITTRUE则等待 pipelining/multiplexing。cURL 7.43.0 时被加入。 PHP 7.0.7 起有效。 CURLOPT_POSTTRUE时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。CURLOPT_PUTTRUE时允许 HTTP 发送文件。要被 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 interface 来上传文件。CURLOPT_SASL_IRTRUE开启,收到首包(first packet)后发送初始的响应(initial response)。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 验证对等证书(peer's certificate)。要验证的交换证书可以在CURLOPT_CAINFO选项中设置,或在CURLOPT_CAPATH中设置证书目录。自cURL 7.10开始默认为 TRUE。从 cURL 7.10开始默认绑定安装。CURLOPT_SSL_VERIFYSTATUSTRUE验证证书状态。cURL 7.41.0 中添加, PHP 7.0.7 起有效。 CURLOPT_TCP_FASTOPENTRUE开启 TCP Fast Open。cURL 7.49.0 中添加, PHP 7.0.7 起有效。 CURLOPT_TFTP_NO_OPTIONSTRUE不发送 TFTP 的 options 请求。自 cURL 7.48.0 添加, PHP 7.0.7 起有效。 CURLOPT_TRANSFERTEXTTRUE对 FTP 传输使用 ASCII 模式。对于LDAP,它检索纯文本信息而非 HTML。在 Windows 系统上,系统不会把 STDOUT 设置成二进制 模式。CURLOPT_UNRESTRICTED_AUTHTRUE在使用CURLOPT_FOLLOWLOCATION重定向 header 中的多个 location 时继续发送用户名和密码信息,哪怕主机名已改变。CURLOPT_UPLOADTRUE准备上传。CURLOPT_VERBOSETRUE会输出所有的信息,写入到STDERR,或在CURLOPT_STDERR中指定的文件。
以下 option的value应该被设置成 integer:
| 选项 | 设置value为 |
备注 |
|---|---|---|
CURLOPT_BUFFERSIZE |
每次读入的缓冲的尺寸。当然不保证每次都会完全填满这个尺寸。 | 在cURL 7.10中被加入。 |
CURLOPT_CLOSEPOLICY |
CURLCLOSEPOLICY_* 中的一个。
|
CURLOPT_CONNECTTIMEOUTCURLOPT_CONNECTTIMEOUT_MSCURLOPT_DNS_CACHE_TIMEOUTCURLOPT_EXPECT_100_TIMEOUT_MSCURLOPT_FTPSSLAUTHCURLOPT_HEADEROPTCURLHEADER_UNIFIED: the headers specified in
CURLOPT_HTTPHEADER will be used in requests
both to servers and proxies. With this option enabled,
CURLOPT_PROXYHEADER will not have any effect.
CURLHEADER_SEPARATE: makes
CURLOPT_HTTPHEADER headers only get sent to
a server and not to a proxy. Proxy headers must be set with
CURLOPT_PROXYHEADER to get used. Note that if
a non-CONNECT request is sent to a proxy, libcurl will send both
server headers and proxy headers. When doing CONNECT, libcurl will
send CURLOPT_PROXYHEADER headers only to the
proxy and then CURLOPT_HTTPHEADER headers
only to the server.
Defaults to CURLHEADER_SEPARATE as of cURL
7.42.1, and CURLHEADER_UNIFIED before.
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。
可以使用 | 位域(OR)操作符结合多个值,cURL 会让服务器选择受支持的方法,并选择最好的那个。
CURLAUTH_ANY是 CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名。
CURLAUTH_ANYSAFE 是 CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名。
CURLOPT_INFILESIZECURLOPT_READFUNCTION。
CURLOPT_LOW_SPEED_LIMITCURLOPT_LOW_SPEED_TIME秒数统计是否因太慢而取消传输。
CURLOPT_LOW_SPEED_TIMECURLOPT_LOW_SPEED_LIMIT时(bytes/sec),PHP会判断是否因太慢而取消传输。
CURLOPT_MAXCONNECTSCURLOPT_CLOSEPOLICY决定应该关闭哪些连接。
CURLOPT_MAXREDIRSCURLOPT_FOLLOWLOCATION一起使用的。
CURLOPT_PORTCURLOPT_POSTREDIRCURLOPT_FOLLOWLOCATION 时,什么情况下需要再次 HTTP POST 到重定向网址。
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。
CURLOPT_PROXYAUTHCURLOPT_HTTPAUTH中的位掩码。
当前仅仅支持 CURLAUTH_BASIC和CURLAUTH_NTLM。
CURLOPT_PROXYPORTCURLOPT_PROXY中设置。
CURLOPT_PROXYTYPECURLPROXY_HTTP (默认值)
CURLPROXY_SOCKS4、
CURLPROXY_SOCKS5、
CURLPROXY_SOCKS4A 或
CURLPROXY_SOCKS5_HOSTNAME。
CURLOPT_REDIR_PROTOCOLSCURLPROTO_* 值的位掩码。如果被启用,位掩码会限制 libcurl 在 CURLOPT_FOLLOWLOCATION开启时,使用的协议。
默认允许除 FILE 和 SCP 外所有协议。
这和 7.19.4 前的版本无条件支持所有支持的协议不同。关于协议常量,请参照CURLOPT_PROTOCOLS。
CURLOPT_RESUME_FROMCURLOPT_SSL_OPTIONSCURLSSLOPT_ALLOW_BEAST: do not attempt to use
any workarounds for a security flaw in the SSL3 and TLS1.0 protocols.
CURLSSLOPT_NO_REVOKE: disable certificate
revocation checks for those SSL backends where such behavior is
present.
CURLOPT_SSL_VERIFYHOSTCURLOPT_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) 中的其中一个。
Note:
你最好别设置这个值,让它使用默认值。 设置为 2 或 3 比较危险,在 SSLv2 和 SSLv3 中有弱点存在。
CURLOPT_STREAM_WEIGHTCURLOPT_TIMECONDITIONCURLOPT_TIMEVALUE。
使用 CURL_TIMECOND_IFMODSINCE,仅在页面 CURLOPT_TIMEVALUE 之后修改,才返回页面。没有修改则返回 "304 Not Modified" 头,假设设置了 CURLOPT_HEADER 为 TRUE。CURL_TIMECOND_IFUNMODSINCE则起相反的效果。
默认为 CURL_TIMECOND_IFMODSINCE。
CURLOPT_TIMEOUTCURLOPT_TIMEOUT_MSCURLOPT_TIMEVALUECURLOPT_TIMECONDITION使。默认使用CURL_TIMECOND_IFMODSINCE。
CURLOPT_MAX_RECV_SPEED_LARGECURLOPT_MAX_SEND_SPEED_LARGECURLOPT_SSH_AUTH_TYPESCURLSSH_AUTH_PUBLICKEY,
CURLSSH_AUTH_PASSWORD,
CURLSSH_AUTH_HOST,
CURLSSH_AUTH_KEYBOARD. Set to
CURLSSH_AUTH_ANY to let libcurl pick one.
CURLOPT_IPRESOLVECURL_IPRESOLVE_WHATEVER、
CURL_IPRESOLVE_V4、
CURL_IPRESOLVE_V6,默认是
CURL_IPRESOLVE_WHATEVER。
CURLOPT_FTP_FILEMETHODCURLFTPMETHOD_MULTICWD、
CURLFTPMETHOD_NOCWD 和
CURLFTPMETHOD_SINGLECWD。
对于下面的这些option,value应该被设置成 string:
| 选项 | 设置的value |
备注 |
|---|---|---|
CURLOPT_CAINFO |
一个保存着1个或多个用来让服务端验证的证书的文件名。这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义。 .
|
可能需要绝对路径。 |
CURLOPT_CAPATH |
一个保存着多个CA证书的目录。这个选项是和CURLOPT_SSL_VERIFYPEER一起使用的。
|
|
CURLOPT_COOKIE |
设定 HTTP 请求中"Cookie: "部分的内容。多个 cookie 用分号分隔,分号后带一个空格(例如, "fruit=apple; colour=red")。 | |
CURLOPT_COOKIEFILE |
包含 cookie 数据的文件名,cookie 文件的格式可以是 Netscape 格式,或者只是纯 HTTP 头部风格,存入文件。如果文件名是空的,不会加载 cookie,但 cookie 的处理仍旧启用。 | |
CURLOPT_COOKIEJAR |
连接结束后,比如,调用 curl_close 后,保存 cookie 信息的文件。 | |
CURLOPT_CUSTOMREQUEST |
HTTP 请求时,使用自定义的 Method 来代替"GET"或"HEAD"。对 "DELETE" 或者其他更隐蔽的 HTTP 请求有用。 有效值如 "GET","POST","CONNECT"等等;也就是说,不要在这里输入整行 HTTP 请求。例如输入"GET /index.html HTTP/1.0\r\n\r\n"是不正确的。
|
CURLOPT_DEFAULT_PROTOCOLURL不带协议的时候,使用的默认协议。
CURLOPT_DNS_INTERFACESet the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address).
CURLOPT_DNS_LOCAL_IP4Set the local IPv4 address that the resolver should bind to. The argument should contain a single numerical IPv4 address as a string.
CURLOPT_DNS_LOCAL_IP6Set the local IPv6 address that the resolver should bind to. The argument should contain a single numerical IPv6 address as a string.
CURLOPT_EGDSOCKETCURLOPT_RANDOM_FILE,除了一个Entropy Gathering Daemon套接字。
CURLOPT_ENCODINGCURLOPT_FTPPORTCURLOPT_INTERFACECURLOPT_KEYPASSWDCURLOPT_SSLKEY
或 CURLOPT_SSH_PRIVATE_KEYFILE 私钥时候的密码。
CURLOPT_KRB4LEVELNULL 时将禁用 KRB4 安全认证。目前 KRB4 安全认证只能用于 FTP 传输。
CURLOPT_LOGIN_OPTIONSCURLOPT_USERNAME option.
CURLOPT_PINNEDPUBLICKEYCURLOPT_POSTFIELDSvalue是一个数组,Content-Type头将会被设置成multipart/form-data。
从 PHP 5.2.0 开始,使用 @ 前缀传递文件时,value 必须是个数组。
从 PHP 5.5.0 开始, @ 前缀已被废弃,文件可通过 CURLFile 发送。
设置 CURLOPT_SAFE_UPLOAD 为 TRUE 可禁用 @ 前缀发送文件,以增加安全性。
CURLOPT_PRIVATECURLINFO_PRIVATE option of
curl_getinfo(). cURL does nothing with this data.
When using a cURL multi handle, this private data is typically a
unique key to identify a standard cURL handle.
CURLOPT_PROXYCURLOPT_PROXY_SERVICE_NAMECURLOPT_PROXYUSERPWDCURLOPT_RANDOM_FILECURLOPT_RANGECURLOPT_REFERERCURLOPT_SERVICE_NAMECURLOPT_SSH_HOST_PUBLIC_KEY_MD5CURLOPT_SSH_PUBLIC_KEYFILECURLOPT_SSH_PRIVATE_KEYFILECURLOPT_KEYPASSWD.
CURLOPT_SSL_CIPHER_LISTCURLOPT_SSLCERTCURLOPT_SSLCERTPASSWDCURLOPT_SSLCERT证书需要的密码。
CURLOPT_SSLCERTTYPECURLOPT_SSLENGINECURLOPT_SSLKEY中指定的SSL私钥的加密引擎变量。
CURLOPT_SSLENGINE_DEFAULTCURLOPT_SSLKEYCURLOPT_SSLKEYPASSWD
在 CURLOPT_SSLKEY中指定了的SSL私钥的密码。
Note:
由于这个选项包含了敏感的密码信息,记得保证这个PHP脚本的安全。
CURLOPT_SSLKEYTYPECURLOPT_SSLKEY中规定的私钥的加密类型,支持的密钥类型为"PEM"(默认值)、"DER"和"ENG"。
CURLOPT_UNIX_SOCKET_PATHCURLOPT_URLCURLOPT_USERAGENTCURLOPT_USERNAMECURLOPT_USERPWDCURLOPT_XOAUTH2_BEARER以下option,value应该被设置成数组:
| 选项 | 可选value值 |
备注 |
|---|---|---|
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 头字段的数组。格式:
array('Content-type: text/plain', 'Content-length: 100')
|
|
CURLOPT_POSTQUOTE |
在 FTP 请求执行完成后,在服务器上执行的一组array格式的 FTP 命令。 | |
CURLOPT_PROXYHEADER |
传给代理的自定义 HTTP 头。 | cURL 7.37.0 中添加,自 PHP 7.0.7 添加。 |
CURLOPT_QUOTE |
一组先于 FTP 请求的在服务器上执行的FTP命令。 | |
CURLOPT_RESOLVE |
提供自定义地址,指定了主机和端口。
包含主机、端口和 ip 地址的字符串,组成 array 的,每个元素以冒号分隔。格式:
array("example.com:80:127.0.0.1")
|
在 cURL 7.21.3 中添加,自 PHP 5.5.0 起可用。 |
以下 option,value应该被设置成流资源
(例如使用fopen()):
| 选项 | 可选value值 |
|---|---|
CURLOPT_FILE |
设置输出文件,默认为STDOUT (浏览器)。 |
CURLOPT_INFILE |
上传文件时需要读取的文件。 |
CURLOPT_STDERR |
错误输出的地址,取代默认的STDERR。 |
CURLOPT_WRITEHEADER |
设置 header 部分内容的写入的文件地址。 |
以下option 的 value应该是有效的函数或者闭包:
| 选项 | value值 |
|---|---|
CURLOPT_HEADERFUNCTION |
设置一个回调函数,这个函数有两个参数,第一个是cURL的资源句柄,第二个是输出的 header 数据。header数据的输出必须依赖这个函数,返回已写入的数据大小。 |
CURLOPT_PASSWDFUNCTION |
设置一个回调函数,有三个参数,第一个是cURL的资源句柄,第二个是一个密码提示符,第三个参数是密码长度允许的最大值。返回密码的值。 |
CURLOPT_PROGRESSFUNCTION |
设置一个回调函数,有五个参数,第一个是cURL的资源句柄,第二个是预计要下载的总字节(bytes)数。第三个是目前下载的字节数,第四个是预计传输中总上传字节数,第五个是目前上传的字节数。
|
返回非零值将中断传输。
传输将设置 CURLE_ABORTED_BY_CALLBACK 错误。
CURLOPT_READFUNCTIONCURLOPT_INFILE 传给 cURL 的 stream resource;第三个参数是最大可以读取的数据的数量。回
调函数必须返回一个字符串,长度小于或等于请求的数据量(第三个参数)。一般从传入的 stream
resource 读取。返回空字符串作为 EOF(文件结束) 信号。
CURLOPT_WRITEFUNCTION其他值:
| Option | 设置 value 为 |
|---|---|
CURLOPT_SHARE |
curl_share_init() 返回的结果。 使 cURL 可以处理共享句柄里的数据。 |
返回值
成功时返回 TRUE, 或者在失败时返回 FALSE。
更新日志
| 版本 | 说明 |
|---|---|
| 7.0.7 |
引入 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 和
CURLSSLOPT_NO_REVOKE。
|
| 7.0.0 |
禁用 CURLOPT_SAFE_UPLOAD 的选项已被删掉了。
所有的 curl 文件的上传都必须使用 CURLFile。
|
| 5.6.0 |
默认 CURLOPT_SAFE_UPLOAD为 TRUE 。
|
| 5.6.0 |
移出 CURLOPT_CLOSEPOLICY和相关的值。
|
| 5.5.0 |
添加 cURL 资源作为 CURLOPT_PROGRESSFUNCTION 回调函数的第一个参数。
|
| 5.5.0 |
引入 CURLOPT_SHARE。
|
| 5.3.0 |
引入 CURLOPT_PROGRESSFUNCTION。
|
| 5.2.10 |
引入 CURLOPT_PROTOCOLS, and
CURLOPT_REDIR_PROTOCOLS.
|
| 5.2.4 |
引入了 CURLOPT_PRIVATE。
|
| 5.1.0 |
引入 CURLOPT_AUTOREFERER,
CURLOPT_BINARYTRANSFER,
CURLOPT_FTPSSLAUTH,
CURLOPT_PROXYAUTH, and
CURLOPT_TIMECONDITION.
|
| 5.0.0 |
引入 CURLOPT_FTP_USE_EPRT,
CURLOPT_NOSIGNAL,
CURLOPT_UNRESTRICTED_AUTH,
CURLOPT_BUFFERSIZE,
CURLOPT_HTTPAUTH,
CURLOPT_PROXYPORT,
CURLOPT_PROXYTYPE,
CURLOPT_SSLCERTTYPE, and
CURLOPT_HTTP200ALIASES.
|
范例
Example #1 初始化一个新的cURL会话并获取一个网页
<?php
// 创建一个新cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// 抓取URL并把它传递给浏览器
curl_exec($ch);
//关闭cURL资源,并且释放系统资源
curl_close($ch);
?>
Example #2 上传文件 (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); // 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
)
)
注释
Note:
传递一个数组到
CURLOPT_POSTFIELDS,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。