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_AUTOREFERER
TRUE
时将根据 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_CERTINFO
TRUE
将在安全传输时输出 SSL 证书信息到 STDERR。在 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
启用时将Unix的换行符转换成回车换行符。 CURLOPT_DNS_USE_GLOBAL_CACHE
TRUE
会启用一个全局的DNS缓存。此选项非线程安全的,默认已开启。CURLOPT_FAILONERROR
当 HTTP 状态码大于等于 400, TRUE
将将显示错误详情。 默认情况下将返回页面,忽略 HTTP 代码。CURLOPT_SSL_FALSESTART
TRUE
开启 TLS False Start (一种 TLS 握手优化方式)cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。 CURLOPT_FILETIME
TRUE
时,会尝试获取远程文档中的修改时间信息。 信息可通过curl_getinfo()函数的CURLINFO_FILETIME
选项获取。CURLOPT_FOLLOWLOCATION
TRUE
时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。(注意:这是递归的,"Location: " 发送几次就重定向几次,除非设置了CURLOPT_MAXREDIRS
,限制最大重定向次数。)。CURLOPT_FORBID_REUSE
TRUE
在完成交互以后强制明确的断开连接,不能在连接池中重用。CURLOPT_FRESH_CONNECT
TRUE
强制获取一个新的连接,而不是缓存中的连接。CURLOPT_FTP_USE_EPRT
TRUE
时,当 FTP 下载时,使用 EPRT (和 LPRT)命令。 设置为FALSE
时禁用 EPRT 和 LPRT,仅仅使用PORT 命令。CURLOPT_FTP_USE_EPSV
TRUE
时,在FTP传输过程中,回到 PASV 模式前,先尝试 EPSV 命令。设置为FALSE
时禁用 EPSV。CURLOPT_FTP_CREATE_MISSING_DIRS
TRUE
时,当 ftp 操作不存在的目录时将创建它。CURLOPT_FTPAPPEND
TRUE
为追加写入文件,而不是覆盖。CURLOPT_TCP_NODELAY
TRUE
时禁用 TCP 的 Nagle 算法,就是减少网络上的小包数量。PHP 5.2.1 有效,编译时需要 libcurl 7.11.2 及以上。 CURLOPT_FTPASCII
CURLOPT_TRANSFERTEXT
的别名。CURLOPT_FTPLISTONLY
TRUE
时只列出 FTP 目录的名字。CURLOPT_HEADER
启用时会将头文件的信息作为数据流输出。 CURLINFO_HEADER_OUT
TRUE
时追踪句柄的请求字符串。从 PHP 5.1.3 开始可用。 CURLINFO_
的前缀是有意的(intentional)。CURLOPT_HTTPGET
TRUE
时会设置 HTTP 的 method 为 GET,由于默认是 GET,所以只有 method 被修改时才需要这个选项。CURLOPT_HTTPPROXYTUNNEL
TRUE
会通过指定的 HTTP 代理来传输。CURLOPT_MUTE
TRUE
时将完全静默,无论是何 cURL 函数。在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作为代替) CURLOPT_NETRC
TRUE
时,在连接建立时,访问~/.netrc文件获取用户名和密码来连接远程站点。CURLOPT_NOBODY
TRUE
时将不输出 BODY 部分。同时 Mehtod 变成了 HEAD。修改为FALSE
时不会变成 GET。CURLOPT_NOPROGRESS
TRUE
时关闭 cURL 的传输进度。Note:
PHP 默认自动设置此选项为
TRUE
,只有为了调试才需要改变设置。CURLOPT_NOSIGNAL
TRUE
时忽略所有的 cURL 传递给 PHP 进行的信号。在 SAPI 多线程传输时此项被默认启用,所以超时选项仍能使用。cURL 7.10时被加入。 CURLOPT_PATH_AS_IS
TRUE
不处理 dot dot sequences (即 ../ )cURL 7.42.0 时被加入。 PHP 7.0.7 起有效。 CURLOPT_PIPEWAIT
TRUE
则等待 pipelining/multiplexing。cURL 7.43.0 时被加入。 PHP 7.0.7 起有效。 CURLOPT_POST
TRUE
时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。CURLOPT_PUT
TRUE
时允许 HTTP 发送文件。要被 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 interface 来上传文件。CURLOPT_SASL_IR
TRUE
开启,收到首包(first packet)后发送初始的响应(initial response)。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 验证对等证书(peer's certificate)。要验证的交换证书可以在CURLOPT_CAINFO
选项中设置,或在CURLOPT_CAPATH
中设置证书目录。自cURL 7.10开始默认为 TRUE
。从 cURL 7.10开始默认绑定安装。CURLOPT_SSL_VERIFYSTATUS
TRUE
验证证书状态。cURL 7.41.0 中添加, PHP 7.0.7 起有效。 CURLOPT_TCP_FASTOPEN
TRUE
开启 TCP Fast Open。cURL 7.49.0 中添加, PHP 7.0.7 起有效。 CURLOPT_TFTP_NO_OPTIONS
TRUE
不发送 TFTP 的 options 请求。自 cURL 7.48.0 添加, PHP 7.0.7 起有效。 CURLOPT_TRANSFERTEXT
TRUE
对 FTP 传输使用 ASCII 模式。对于LDAP,它检索纯文本信息而非 HTML。在 Windows 系统上,系统不会把 STDOUT 设置成二进制 模式。CURLOPT_UNRESTRICTED_AUTH
TRUE
在使用CURLOPT_FOLLOWLOCATION
重定向 header 中的多个 location 时继续发送用户名和密码信息,哪怕主机名已改变。CURLOPT_UPLOAD
TRUE
准备上传。CURLOPT_VERBOSE
TRUE
会输出所有的信息,写入到STDERR,或在CURLOPT_STDERR
中指定的文件。
以下 option
的value
应该被设置成 integer:
选项 | 设置value 为 |
备注 |
---|---|---|
CURLOPT_BUFFERSIZE |
每次读入的缓冲的尺寸。当然不保证每次都会完全填满这个尺寸。 | 在cURL 7.10中被加入。 |
CURLOPT_CLOSEPOLICY |
CURLCLOSEPOLICY_* 中的一个。
|
CURLOPT_CONNECTTIMEOUT
CURLOPT_CONNECTTIMEOUT_MS
CURLOPT_DNS_CACHE_TIMEOUT
CURLOPT_EXPECT_100_TIMEOUT_MS
CURLOPT_FTPSSLAUTH
CURLOPT_HEADEROPT
CURLHEADER_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_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
。
可以使用 | 位域(OR)操作符结合多个值,cURL 会让服务器选择受支持的方法,并选择最好的那个。
CURLAUTH_ANY
是 CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名。
CURLAUTH_ANYSAFE
是 CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名。
CURLOPT_INFILESIZE
CURLOPT_READFUNCTION
。
CURLOPT_LOW_SPEED_LIMIT
CURLOPT_LOW_SPEED_TIME
秒数统计是否因太慢而取消传输。
CURLOPT_LOW_SPEED_TIME
CURLOPT_LOW_SPEED_LIMIT
时(bytes/sec),PHP会判断是否因太慢而取消传输。
CURLOPT_MAXCONNECTS
CURLOPT_CLOSEPOLICY
决定应该关闭哪些连接。
CURLOPT_MAXREDIRS
CURLOPT_FOLLOWLOCATION
一起使用的。
CURLOPT_PORT
CURLOPT_POSTREDIR
CURLOPT_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_PROXYAUTH
CURLOPT_HTTPAUTH
中的位掩码。
当前仅仅支持 CURLAUTH_BASIC
和CURLAUTH_NTLM
。
CURLOPT_PROXYPORT
CURLOPT_PROXY
中设置。
CURLOPT_PROXYTYPE
CURLPROXY_HTTP
(默认值)
CURLPROXY_SOCKS4
、
CURLPROXY_SOCKS5
、
CURLPROXY_SOCKS4A
或
CURLPROXY_SOCKS5_HOSTNAME
。
CURLOPT_REDIR_PROTOCOLS
CURLPROTO_*
值的位掩码。如果被启用,位掩码会限制 libcurl 在 CURLOPT_FOLLOWLOCATION
开启时,使用的协议。
默认允许除 FILE 和 SCP 外所有协议。
这和 7.19.4 前的版本无条件支持所有支持的协议不同。关于协议常量,请参照CURLOPT_PROTOCOLS
。
CURLOPT_RESUME_FROM
CURLOPT_SSL_OPTIONS
CURLSSLOPT_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_VERIFYHOST
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) 中的其中一个。
Note:
你最好别设置这个值,让它使用默认值。 设置为 2 或 3 比较危险,在 SSLv2 和 SSLv3 中有弱点存在。
CURLOPT_STREAM_WEIGHT
CURLOPT_TIMECONDITION
CURLOPT_TIMEVALUE
。
使用 CURL_TIMECOND_IFMODSINCE
,仅在页面 CURLOPT_TIMEVALUE
之后修改,才返回页面。没有修改则返回 "304 Not Modified" 头,假设设置了 CURLOPT_HEADER
为 TRUE
。CURL_TIMECOND_IFUNMODSINCE
则起相反的效果。
默认为 CURL_TIMECOND_IFMODSINCE
。
CURLOPT_TIMEOUT
CURLOPT_TIMEOUT_MS
CURLOPT_TIMEVALUE
CURLOPT_TIMECONDITION
使。默认使用CURL_TIMECOND_IFMODSINCE
。
CURLOPT_MAX_RECV_SPEED_LARGE
CURLOPT_MAX_SEND_SPEED_LARGE
CURLOPT_SSH_AUTH_TYPES
CURLSSH_AUTH_PUBLICKEY
,
CURLSSH_AUTH_PASSWORD
,
CURLSSH_AUTH_HOST
,
CURLSSH_AUTH_KEYBOARD
. Set to
CURLSSH_AUTH_ANY
to let libcurl pick one.
CURLOPT_IPRESOLVE
CURL_IPRESOLVE_WHATEVER
、
CURL_IPRESOLVE_V4
、
CURL_IPRESOLVE_V6
,默认是
CURL_IPRESOLVE_WHATEVER
。
CURLOPT_FTP_FILEMETHOD
CURLFTPMETHOD_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_PROTOCOL
URL不带协议的时候,使用的默认协议。
CURLOPT_DNS_INTERFACE
Set 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_IP4
Set 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_IP6
Set the local IPv6 address that the resolver should bind to. The argument should contain a single numerical IPv6 address as a string.
CURLOPT_EGDSOCKET
CURLOPT_RANDOM_FILE
,除了一个Entropy Gathering Daemon套接字。
CURLOPT_ENCODING
CURLOPT_FTPPORT
CURLOPT_INTERFACE
CURLOPT_KEYPASSWD
CURLOPT_SSLKEY
或 CURLOPT_SSH_PRIVATE_KEYFILE
私钥时候的密码。
CURLOPT_KRB4LEVEL
NULL
时将禁用 KRB4 安全认证。目前 KRB4 安全认证只能用于 FTP 传输。
CURLOPT_LOGIN_OPTIONS
CURLOPT_USERNAME
option.
CURLOPT_PINNEDPUBLICKEY
CURLOPT_POSTFIELDS
value
是一个数组,Content-Type头将会被设置成multipart/form-data。
从 PHP 5.2.0 开始,使用 @ 前缀传递文件时,value
必须是个数组。
从 PHP 5.5.0 开始, @ 前缀已被废弃,文件可通过 CURLFile 发送。
设置 CURLOPT_SAFE_UPLOAD
为 TRUE
可禁用 @ 前缀发送文件,以增加安全性。
CURLOPT_PRIVATE
CURLINFO_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_PROXY
CURLOPT_PROXY_SERVICE_NAME
CURLOPT_PROXYUSERPWD
CURLOPT_RANDOM_FILE
CURLOPT_RANGE
CURLOPT_REFERER
CURLOPT_SERVICE_NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
CURLOPT_SSH_PUBLIC_KEYFILE
CURLOPT_SSH_PRIVATE_KEYFILE
CURLOPT_KEYPASSWD
.
CURLOPT_SSL_CIPHER_LIST
CURLOPT_SSLCERT
CURLOPT_SSLCERTPASSWD
CURLOPT_SSLCERT
证书需要的密码。
CURLOPT_SSLCERTTYPE
CURLOPT_SSLENGINE
CURLOPT_SSLKEY
中指定的SSL私钥的加密引擎变量。
CURLOPT_SSLENGINE_DEFAULT
CURLOPT_SSLKEY
CURLOPT_SSLKEYPASSWD
在 CURLOPT_SSLKEY
中指定了的SSL私钥的密码。
Note:
由于这个选项包含了敏感的密码信息,记得保证这个PHP脚本的安全。
CURLOPT_SSLKEYTYPE
CURLOPT_SSLKEY
中规定的私钥的加密类型,支持的密钥类型为"PEM"(默认值)、"DER"和"ENG"。
CURLOPT_UNIX_SOCKET_PATH
CURLOPT_URL
CURLOPT_USERAGENT
CURLOPT_USERNAME
CURLOPT_USERPWD
CURLOPT_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_READFUNCTION
CURLOPT_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。