= 4.0.2, PHP 5, PHP 7, PHP 8)curl_setopt — 設(shè)置 cURL 傳輸選項(xiàng)說(shuō)明curl_setopt(resource $ch, int $option, mixed $value): bool為 cURL 會(huì)話句柄設(shè)置選項(xiàng)。">
(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)
curl_setopt — 設(shè)置 cURL 傳輸選項(xiàng)
為 cURL 會(huì)話句柄設(shè)置選項(xiàng)。
handle
由 curl_init() 返回的 cURL 句柄。
option
需要設(shè)置的CURLOPT_XXX
選項(xiàng)。
value
將設(shè)置在option
選項(xiàng)上的值。
以下 option
參數(shù)的 value
應(yīng)該被設(shè)置成 bool 類型:
選項(xiàng) | 將 value 設(shè)置為 |
備注 |
---|---|---|
CURLOPT_AUTOREFERER |
true 時(shí)將根據(jù) Location: 重定向時(shí),自動(dòng)設(shè)置 header 中的Referer: 信息。
|
|
CURLOPT_BINARYTRANSFER |
設(shè)為 true ,將在啟用 CURLOPT_RETURNTRANSFER 時(shí),返回原生的(Raw)輸出。
|
從 PHP 5.1.3 開(kāi)始,此選項(xiàng)不再有效果:使用
CURLOPT_RETURNTRANSFER 后總是會(huì)返回原生的(Raw)內(nèi)容。
|
CURLOPT_COOKIESESSION |
設(shè)為 true 時(shí)將開(kāi)啟新的一次 cookie 會(huì)話。它將強(qiáng)制 libcurl 忽略之前會(huì)話時(shí)存的其他 cookie。
libcurl 在默認(rèn)狀況下無(wú)論是否為會(huì)話,都會(huì)儲(chǔ)存、加載所有 cookie。會(huì)話 cookie 是指沒(méi)有過(guò)期時(shí)間,只存活在會(huì)話之中。
|
|
CURLOPT_CERTINFO |
true 將在安全傳輸時(shí)輸出 SSL 證書(shū)信息到 STDERR 。
|
在 cURL 7.19.1 中添加。
PHP 5.3.2 后有效。
需要開(kāi)啟 CURLOPT_VERBOSE 才有效。
|
CURLOPT_CONNECT_ONLY |
true 將讓庫(kù)執(zhí)行所有需要的代理、驗(yàn)證、連接過(guò)程,但不傳輸數(shù)據(jù)。此選項(xiàng)用于
HTTP、SMTP 和 POP3。
|
在 7.15.2 中添加。 PHP 5.5.0 起有效。 |
CURLOPT_CRLF |
啟用時(shí)將Unix的換行符轉(zhuǎn)換成回車(chē)換行符。 | |
CURLOPT_DNS_USE_GLOBAL_CACHE |
true 會(huì)啟用一個(gè)全局的DNS緩存。此選項(xiàng)非線程安全的,默認(rèn)已開(kāi)啟。
|
|
CURLOPT_FAILONERROR |
當(dāng) HTTP 狀態(tài)碼大于等于 400,true 將將顯示錯(cuò)誤詳情。 默認(rèn)情況下將返回頁(yè)面,忽略 HTTP 代碼。
|
|
CURLOPT_SSL_FALSESTART |
true 開(kāi)啟 TLS False Start (一種 TLS 握手優(yōu)化方式)
|
cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。 |
CURLOPT_FILETIME |
true 時(shí),會(huì)嘗試獲取遠(yuǎn)程文檔中的修改時(shí)間信息。
信息可通過(guò)curl_getinfo()函數(shù)的CURLINFO_FILETIME 選項(xiàng)獲取。
|
|
CURLOPT_FOLLOWLOCATION |
true 時(shí)將會(huì)根據(jù)服務(wù)器返回 HTTP 頭中的 "Location: " 重定向。(注意:這是遞歸的,"Location: " 發(fā)送幾次就重定向幾次,除非設(shè)置了 CURLOPT_MAXREDIRS ,限制最大重定向次數(shù)。)。
|
|
CURLOPT_FORBID_REUSE |
true 在完成交互以后強(qiáng)制明確的斷開(kāi)連接,不能在連接池中重用。
|
|
CURLOPT_FRESH_CONNECT |
true 強(qiáng)制獲取一個(gè)新的連接,而不是緩存中的連接。
|
|
CURLOPT_FTP_USE_EPRT |
true 時(shí),當(dāng) FTP 下載時(shí),使用 EPRT (和 LPRT)命令。 設(shè)置為 false 時(shí)禁用 EPRT 和 LPRT,僅僅使用PORT 命令。
|
|
CURLOPT_FTP_USE_EPSV |
true 時(shí),在FTP傳輸過(guò)程中,回到 PASV 模式前,先嘗試 EPSV 命令。設(shè)置為 false 時(shí)禁用 EPSV。
|
|
CURLOPT_FTP_CREATE_MISSING_DIRS |
true 時(shí),當(dāng) ftp 操作不存在的目錄時(shí)將創(chuàng)建它。
|
|
CURLOPT_FTPAPPEND |
true 為追加寫(xiě)入文件,而不是覆蓋。
|
|
CURLOPT_TCP_NODELAY |
true 時(shí)禁用 TCP 的 Nagle 算法,就是減少網(wǎng)絡(luò)上的小包數(shù)量。
|
PHP 5.2.1 有效,編譯時(shí)需要 libcurl 7.11.2 及以上。 |
CURLOPT_FTPASCII |
CURLOPT_TRANSFERTEXT 的別名。
|
|
CURLOPT_FTPLISTONLY |
true 時(shí)只列出 FTP 目錄的名字。
|
|
CURLOPT_HEADER |
啟用時(shí)會(huì)將頭文件的信息作為數(shù)據(jù)流輸出。 | |
CURLINFO_HEADER_OUT |
true 時(shí)追蹤句柄的請(qǐng)求字符串。
|
從 PHP 5.1.3 開(kāi)始可用。CURLINFO_ 的前綴是有意的(intentional)。
|
CURLOPT_HTTPGET |
true 時(shí)會(huì)設(shè)置 HTTP 的 method 為 GET,由于默認(rèn)是 GET,所以只有 method 被修改時(shí)才需要這個(gè)選項(xiàng)。
|
|
CURLOPT_HTTPPROXYTUNNEL |
true 會(huì)通過(guò)指定的 HTTP 代理來(lái)傳輸。
|
|
CURLOPT_MUTE |
true 時(shí)將完全靜默,無(wú)論是何 cURL 函數(shù)。
|
在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作為代替) |
CURLOPT_NETRC |
true 時(shí),在連接建立時(shí),訪問(wèn)~/.netrc文件獲取用戶名和密碼來(lái)連接遠(yuǎn)程站點(diǎn)。
|
|
CURLOPT_NOBODY |
true 時(shí)將不輸出 BODY 部分。同時(shí) Mehtod 變成了 HEAD。修改為 false 時(shí)不會(huì)變成 GET。
|
|
CURLOPT_NOPROGRESS |
|
|
CURLOPT_NOSIGNAL |
true 時(shí)忽略所有的 cURL 傳遞給 PHP 進(jìn)程的信號(hào)。在 SAPI 多線程傳輸時(shí)此項(xiàng)被默認(rèn)啟用,所以超時(shí)選項(xiàng)仍能使用。
|
cURL 7.10時(shí)被加入。 |
CURLOPT_PATH_AS_IS |
true 不處理 dot dot sequences (即 ../ )
|
cURL 7.42.0 時(shí)被加入。 PHP 7.0.7 起有效。 |
CURLOPT_PIPEWAIT |
true 則等待 pipelining/multiplexing。
|
cURL 7.43.0 時(shí)被加入。 PHP 7.0.7 起有效。 |
CURLOPT_POST |
true 時(shí)會(huì)發(fā)送 POST 請(qǐng)求,類型為:application/x-www-form-urlencoded ,是 HTML 表單提交時(shí)最常見(jiàn)的一種。
|
|
CURLOPT_PUT |
true 時(shí)允許 HTTP 發(fā)送文件。要被 PUT 的文件必須在 CURLOPT_INFILE 和CURLOPT_INFILESIZE 中設(shè)置。
|
|
CURLOPT_RETURNTRANSFER |
true 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。
|
|
CURLOPT_SAFE_UPLOAD |
true 禁用 @ 前綴在 CURLOPT_POSTFIELDS 中發(fā)送文件。
意味著 @ 可以在字段中安全得使用了。
可使用 CURLFile 作為上傳的代替。
|
PHP 5.5.0 中添加,默認(rèn)值 false 。
PHP 5.6.0 改默認(rèn)值為 true 。.
PHP 7 刪除了此選項(xiàng), 必須使用 CURLFile interface 來(lái)上傳文件。
|
CURLOPT_SASL_IR |
true 開(kāi)啟,收到首包(first packet)后發(fā)送初始的響應(yīng)(initial response)。
|
cURL 7.31.10 中添加,自 PHP 7.0.7 起有效。 |
CURLOPT_SSL_ENABLE_ALPN |
false 禁用 SSL 握手中的 ALPN (如果 SSL 后端的
libcurl 內(nèi)建支持) 用于協(xié)商到 http2。
|
cURL 7.36.0 中增加, PHP 7.0.7 起有效。 |
CURLOPT_SSL_ENABLE_NPN |
false 禁用 SSL 握手中的 NPN(如果 SSL 后端的
libcurl 內(nèi)建支持),用于協(xié)商到 http2。
|
cURL 7.36.0 中增加, PHP 7.0.7 起有效。 |
CURLOPT_SSL_VERIFYPEER |
false 禁止 cURL 驗(yàn)證對(duì)等證書(shū)(peer's
certificate)。要驗(yàn)證的交換證書(shū)可以在 CURLOPT_CAINFO 選項(xiàng)中設(shè)置,或在 CURLOPT_CAPATH 中設(shè)置證書(shū)目錄。
|
自cURL 7.10開(kāi)始默認(rèn)為 true 。從 cURL 7.10開(kāi)始默認(rèn)綁定安裝。
|
CURLOPT_SSL_VERIFYSTATUS |
true 驗(yàn)證證書(shū)狀態(tài)。
|
cURL 7.41.0 中添加, PHP 7.0.7 起有效。 |
CURLOPT_TCP_FASTOPEN |
true 開(kāi)啟 TCP Fast Open。
|
cURL 7.49.0 中添加, PHP 7.0.7 起有效。 |
CURLOPT_TFTP_NO_OPTIONS |
true 不發(fā)送 TFTP 的 options 請(qǐng)求。
|
自 cURL 7.48.0 添加, PHP 7.0.7 起有效。 |
CURLOPT_TRANSFERTEXT |
true 對(duì) FTP 傳輸使用 ASCII 模式。對(duì)于LDAP,它檢索純文本信息而非 HTML。在 Windows 系統(tǒng)上,系統(tǒng)不會(huì)把 STDOUT 設(shè)置成二進(jìn)制 模式。
|
|
CURLOPT_UNRESTRICTED_AUTH |
true 在使用CURLOPT_FOLLOWLOCATION 重定向 header 中的多個(gè) location 時(shí)繼續(xù)發(fā)送用戶名和密碼信息,哪怕主機(jī)名已改變。
|
|
CURLOPT_UPLOAD |
true 準(zhǔn)備上傳。
|
|
CURLOPT_VERBOSE |
true 會(huì)輸出所有的信息,寫(xiě)入到STDERR ,或在CURLOPT_STDERR 中指定的文件。
|
以下 option
的value
應(yīng)該被設(shè)置成 integer:
選項(xiàng) | 設(shè)置value 為 |
備注 |
---|---|---|
CURLOPT_BUFFERSIZE |
每次讀入的緩沖的尺寸。當(dāng)然不保證每次都會(huì)完全填滿這個(gè)尺寸。 | 在cURL 7.10中被加入。 |
CURLOPT_CLOSEPOLICY |
CURLCLOSEPOLICY_* 中的一個(gè)。
|
PHP 5.6.0 中移除。 |
CURLOPT_CONNECTTIMEOUT |
在嘗試連接時(shí)等待的秒數(shù)。設(shè)置為0,則無(wú)限等待。 | |
CURLOPT_CONNECTTIMEOUT_MS |
嘗試連接等待的時(shí)間,以毫秒為單位。設(shè)置為0,則無(wú)限等待。 如果 libcurl 編譯時(shí)使用系統(tǒng)標(biāo)準(zhǔn)的名稱解析器( standard system name resolver),那部分的連接仍舊使用以秒計(jì)的超時(shí)解決方案,最小超時(shí)時(shí)間還是一秒鐘。 | 在 cURL 7.16.2 中被加入。從 PHP 5.2.3 開(kāi)始可用。 |
CURLOPT_DNS_CACHE_TIMEOUT |
設(shè)置在內(nèi)存中緩存 DNS 的時(shí)間,默認(rèn)為120秒(兩分鐘)。 | |
CURLOPT_EXPECT_100_TIMEOUT_MS |
超時(shí)預(yù)計(jì): 100毫秒內(nèi)的 continue 響應(yīng) 默認(rèn)為 1000 毫秒。 | cURL 7.36.0 中添加,自 PHP 7.0.7 有效。 |
CURLOPT_FTPSSLAUTH |
FTP驗(yàn)證方式(啟用的時(shí)候):CURLFTPAUTH_SSL (首先嘗試SSL),CURLFTPAUTH_TLS (首先嘗試TLS)或CURLFTPAUTH_DEFAULT (讓cURL 自個(gè)兒決定)。
|
在 cURL 7.12.2 中被加入。 |
CURLOPT_HEADEROPT |
How to deal with headers. One of the following constants:
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.
|
Added in cURL 7.37.0. Available since PHP 7.0.7. |
CURLOPT_HTTP_VERSION |
CURL_HTTP_VERSION_NONE (默認(rèn)值,讓 cURL 自己判斷使用哪個(gè)版本),CURL_HTTP_VERSION_1_0 (強(qiáng)制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (強(qiáng)制使用 HTTP/1.1)。
|
|
CURLOPT_HTTPAUTH |
使用的 HTTP 驗(yàn)證方法。選項(xiàng)有:
可以使用
|
|
CURLOPT_INFILESIZE |
希望傳給遠(yuǎn)程站點(diǎn)的文件尺寸,字節(jié)(byte)為單位。
注意無(wú)法用這個(gè)選項(xiàng)阻止 libcurl 發(fā)送更多的數(shù)據(jù),確切發(fā)送什么取決于 CURLOPT_READFUNCTION 。
|
|
CURLOPT_LOW_SPEED_LIMIT |
傳輸速度,每秒字節(jié)(bytes)數(shù),根據(jù)CURLOPT_LOW_SPEED_TIME 秒數(shù)統(tǒng)計(jì)是否因太慢而取消傳輸。
|
|
CURLOPT_LOW_SPEED_TIME |
當(dāng)傳輸速度小于CURLOPT_LOW_SPEED_LIMIT 時(shí)(bytes/sec),PHP會(huì)判斷是否因太慢而取消傳輸。
|
|
CURLOPT_MAXCONNECTS |
允許的最大連接數(shù)量。達(dá)到限制時(shí),會(huì)通過(guò)CURLOPT_CLOSEPOLICY 決定應(yīng)該關(guān)閉哪些連接。
|
|
CURLOPT_MAXREDIRS |
指定最多的 HTTP 重定向次數(shù),這個(gè)選項(xiàng)是和CURLOPT_FOLLOWLOCATION 一起使用的。
|
|
CURLOPT_PORT |
用來(lái)指定連接端口。 | |
CURLOPT_POSTREDIR |
位掩碼, 1 (301 永久重定向), 2 (302 Found)
和 4 (303 See Other)
設(shè)置 CURLOPT_FOLLOWLOCATION 時(shí),什么情況下需要再次 HTTP POST 到重定向網(wǎng)址。
|
cURL 7.19.1 中添加,PHP 5.3.2 開(kāi)始可用。 |
CURLOPT_PROTOCOLS |
可用的協(xié)議選項(xiàng)為:
|
在 cURL 7.19.4 中被加入。 |
CURLOPT_PROXYAUTH |
HTTP 代理連接的驗(yàn)證方式。使用在CURLOPT_HTTPAUTH 中的位掩碼。
當(dāng)前僅僅支持 CURLAUTH_BASIC 和CURLAUTH_NTLM 。
|
在 cURL 7.10.7 中被加入。 |
CURLOPT_PROXYPORT |
代理服務(wù)器的端口。端口也可以在CURLOPT_PROXY 中設(shè)置。
|
|
CURLOPT_PROXYTYPE |
可以是 CURLPROXY_HTTP (默認(rèn)值)
CURLPROXY_SOCKS4 、
CURLPROXY_SOCKS5 、
CURLPROXY_SOCKS4A 或
CURLPROXY_SOCKS5_HOSTNAME 。
|
在 cURL 7.10 中被加入。 |
CURLOPT_REDIR_PROTOCOLS |
CURLPROTO_* 值的位掩碼。如果被啟用,位掩碼會(huì)限制 libcurl 在 CURLOPT_FOLLOWLOCATION 開(kāi)啟時(shí),使用的協(xié)議。
默認(rèn)允許除 FILE 和 SCP 外所有協(xié)議。
這和 7.19.4 前的版本無(wú)條件支持所有支持的協(xié)議不同。關(guān)于協(xié)議常量,請(qǐng)參照CURLOPT_PROTOCOLS 。
|
在 cURL 7.19.4 中被加入。 |
CURLOPT_RESUME_FROM |
在恢復(fù)傳輸時(shí),傳遞字節(jié)為單位的偏移量(用來(lái)斷點(diǎn)續(xù)傳)。 | |
CURLOPT_SSL_OPTIONS |
Set SSL behavior options, which is a bitmask of any of the following constants:
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.
|
Added in cURL 7.25.0. Available since PHP 7.0.7. |
CURLOPT_SSL_VERIFYHOST |
設(shè)置為 1 是檢查服務(wù)器SSL證書(shū)中是否存在一個(gè)公用名(common name)。譯者注:公用名(Common Name)一般來(lái)講就是填寫(xiě)你將要申請(qǐng)SSL證書(shū)的域名 (domain)或子域名(sub domain)。
設(shè)置成 2,會(huì)檢查公用名是否存在,并且是否與提供的主機(jī)名匹配。
0 為不檢查名稱。
在生產(chǎn)環(huán)境中,這個(gè)值應(yīng)該是 2 (默認(rèn)值)。
|
值 1 的支持在 cURL 7.28.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) 中的其中一個(gè)。
|
|
CURLOPT_STREAM_WEIGHT |
設(shè)置 stream weight 數(shù)值 ( 1 和 256 之間的數(shù)字). | cURL 7.46.0 中添加,自 PHP 7.0.7 起有效。 |
CURLOPT_TIMECONDITION |
設(shè)置如何對(duì)待 CURLOPT_TIMEVALUE 。
使用 CURL_TIMECOND_IFMODSINCE ,僅在頁(yè)面 CURLOPT_TIMEVALUE 之后修改,才返回頁(yè)面。沒(méi)有修改則返回 "304 Not Modified" 頭,假設(shè)設(shè)置了 CURLOPT_HEADER 為 true 。CURL_TIMECOND_IFUNMODSINCE 則起相反的效果。
默認(rèn)為 CURL_TIMECOND_IFMODSINCE 。
|
|
CURLOPT_TIMEOUT |
允許 cURL 函數(shù)執(zhí)行的最長(zhǎng)秒數(shù)。 | |
CURLOPT_TIMEOUT_MS |
設(shè)置cURL允許執(zhí)行的最長(zhǎng)毫秒數(shù)。 如果 libcurl 編譯時(shí)使用系統(tǒng)標(biāo)準(zhǔn)的名稱解析器( standard system name resolver),那部分的連接仍舊使用以秒計(jì)的超時(shí)解決方案,最小超時(shí)時(shí)間還是一秒鐘。 | 在 cURL 7.16.2 中被加入。從 PHP 5.2.3 起可使用。 |
CURLOPT_TIMEVALUE |
秒數(shù),從 1970年1月1日開(kāi)始。這個(gè)時(shí)間會(huì)被 CURLOPT_TIMECONDITION 使。默認(rèn)使用CURL_TIMECOND_IFMODSINCE 。
|
|
CURLOPT_MAX_RECV_SPEED_LARGE |
如果下載速度超過(guò)了此速度(以每秒字節(jié)數(shù)來(lái)統(tǒng)計(jì)) ,即傳輸過(guò)程中累計(jì)的平均數(shù),傳輸就會(huì)降速到這個(gè)參數(shù)的值。默認(rèn)不限速。 | cURL 7.15.5 中添加, PHP 5.4.0 有效。 |
CURLOPT_MAX_SEND_SPEED_LARGE |
如果上傳的速度超過(guò)了此速度(以每秒字節(jié)數(shù)來(lái)統(tǒng)計(jì)),即傳輸過(guò)程中累計(jì)的平均數(shù) ,傳輸就會(huì)降速到這個(gè)參數(shù)的值。默認(rèn)不限速。 | cURL 7.15.5 中添加, PHP 5.4.0 有效。 |
CURLOPT_SSH_AUTH_TYPES |
A bitmask consisting of one or more of
CURLSSH_AUTH_PUBLICKEY ,
CURLSSH_AUTH_PASSWORD ,
CURLSSH_AUTH_HOST ,
CURLSSH_AUTH_KEYBOARD . Set to
CURLSSH_AUTH_ANY to let libcurl pick one.
|
cURL 7.16.1 中添加。 |
CURLOPT_IPRESOLVE |
允許程序選擇想要解析的 IP 地址類別。只有在地址有多種 ip 類別的時(shí)候才能用,可以的值有:
CURL_IPRESOLVE_WHATEVER 、
CURL_IPRESOLVE_V4 、
CURL_IPRESOLVE_V6 ,默認(rèn)是
CURL_IPRESOLVE_WHATEVER 。
|
cURL 7.10.8 中添加。 |
CURLOPT_FTP_FILEMETHOD |
告訴 curl 使用哪種方式來(lái)獲取 FTP(s) 服務(wù)器上的文件??赡艿闹涤校? CURLFTPMETHOD_MULTICWD 、
CURLFTPMETHOD_NOCWD 和
CURLFTPMETHOD_SINGLECWD 。
|
cURL 7.15.1 中添加, PHP 5.3.0 起有效。 |
對(duì)于下面的這些option
,value
應(yīng)該被設(shè)置成 string:
選項(xiàng) | 設(shè)置的value |
備注 |
---|---|---|
CURLOPT_CAINFO |
一個(gè)保存著1個(gè)或多個(gè)用來(lái)讓服務(wù)端驗(yàn)證的證書(shū)的文件名。這個(gè)參數(shù)僅僅在和CURLOPT_SSL_VERIFYPEER 一起使用時(shí)才有意義。 .
|
可能需要絕對(duì)路徑。 |
CURLOPT_CAPATH |
一個(gè)保存著多個(gè)CA證書(shū)的目錄。這個(gè)選項(xiàng)是和CURLOPT_SSL_VERIFYPEER 一起使用的。
|
|
CURLOPT_COOKIE |
設(shè)定 HTTP 請(qǐng)求中"Cookie: " 部分的內(nèi)容。多個(gè) cookie 用分號(hào)分隔,分號(hào)后帶一個(gè)空格(例如, "fruit=apple; colour=red ")。
|
|
CURLOPT_COOKIEFILE |
包含 cookie 數(shù)據(jù)的文件名,cookie 文件的格式可以是 Netscape 格式,或者只是純 HTTP 頭部風(fēng)格,存入文件。如果文件名是空的,不會(huì)加載 cookie,但 cookie 的處理仍舊啟用。 | |
CURLOPT_COOKIEJAR |
連接結(jié)束后,比如,調(diào)用 curl_close 后,保存 cookie 信息的文件。 | |
CURLOPT_CUSTOMREQUEST |
HTTP 請(qǐng)求時(shí),使用自定義的 Method 來(lái)代替
|
|
CURLOPT_DEFAULT_PROTOCOL |
URL不帶協(xié)議的時(shí)候,使用的默認(rèn)協(xié)議。 |
cURL 7.45.0 中添加,自 PHP 7.0.7 起有效。 |
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). |
Added in cURL 7.33.0. Available since PHP 7.0.7. |
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. |
Added in cURL 7.33.0. Available since PHP 7.0.7. |
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. |
Added in cURL 7.33.0. Available since PHP 7.0.7. |
CURLOPT_EGDSOCKET |
類似CURLOPT_RANDOM_FILE ,除了一個(gè)Entropy Gathering Daemon套接字。
|
|
CURLOPT_ENCODING |
HTTP請(qǐng)求頭中"Accept-Encoding: " 的值。
這使得能夠解碼響應(yīng)的內(nèi)容。
支持的編碼有"identity" ,"deflate" 和"gzip" 。如果為空字符串"" ,會(huì)發(fā)送所有支持的編碼類型。
|
在 cURL 7.10 中被加入。 |
CURLOPT_FTPPORT |
這個(gè)值將被用來(lái)獲取供FTP"PORT"指令所需要的IP地址。 "PORT" 指令告訴遠(yuǎn)程服務(wù)器連接到我們指定的IP地址。這個(gè)字符串可以是純文本的IP地址、主機(jī)名、一個(gè)網(wǎng)絡(luò)接口名(UNIX下)或者只是一個(gè)'-'來(lái)使用默認(rèn)的 IP 地址。 | |
CURLOPT_INTERFACE |
發(fā)送的網(wǎng)絡(luò)接口(interface),可以是一個(gè)接口名、IP 地址或者是一個(gè)主機(jī)名。 | |
CURLOPT_KEYPASSWD |
使用 CURLOPT_SSLKEY
或 CURLOPT_SSH_PRIVATE_KEYFILE 私鑰時(shí)候的密碼。
|
在 cURL 7.16.1 中添加。 |
CURLOPT_KRB4LEVEL |
KRB4 (Kerberos 4) 安全級(jí)別。下面的任何值都是有效的(從低到高的順序):"clear" 、"safe" 、"confidential" 、"private". 。如果字符串以上這些,將使用"private" 。
這個(gè)選項(xiàng)設(shè)置為 null 時(shí)將禁用 KRB4 安全認(rèn)證。目前 KRB4 安全認(rèn)證只能用于 FTP 傳輸。
|
|
CURLOPT_LOGIN_OPTIONS |
Can be used to set protocol specific login options, such as the
preferred authentication mechanism via "AUTH=NTLM" or "AUTH=*",
and should be used in conjunction with the
CURLOPT_USERNAME option.
|
Added in cURL 7.34.0. Available since PHP 7.0.7. |
CURLOPT_PINNEDPUBLICKEY |
Set the pinned public key. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and separated by ";". | Added in cURL 7.39.0. Available since PHP 7.0.7. |
CURLOPT_POSTFIELDS |
全部數(shù)據(jù)使用HTTP協(xié)議中的 "POST" 操作來(lái)發(fā)送。
要發(fā)送文件,在文件名前面加上@ 前綴并使用完整路徑。
文件類型可在文件名后以 ';type=mimetype ' 的格式指定。
這個(gè)參數(shù)可以是 urlencoded 后的字符串,類似'para1=val1¶2=val2&... ',也可以使用一個(gè)以字段名為鍵值,字段數(shù)據(jù)為值的數(shù)組。
如果value 是一個(gè)數(shù)組,Content-Type 頭將會(huì)被設(shè)置成multipart/form-data 。
從 PHP 5.2.0 開(kāi)始,使用 @ 前綴傳遞文件時(shí),value 必須是個(gè)數(shù)組。
從 PHP 5.5.0 開(kāi)始, @ 前綴已被廢棄,文件可通過(guò) CURLFile 發(fā)送。
設(shè)置 CURLOPT_SAFE_UPLOAD 為 true 可禁用 @ 前綴發(fā)送文件,以增加安全性。
|
|
CURLOPT_PRIVATE |
Any data that should be associated with this cURL handle.
This data
can subsequently be retrieved with the
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.
|
Added in cURL 7.10.3. |
CURLOPT_PROXY |
HTTP 代理通道。 | |
CURLOPT_PROXY_SERVICE_NAME |
代理驗(yàn)證服務(wù)的名稱。 | cURL 7.34.0 中添加,PHP 7.0.7 起有效。 |
CURLOPT_PROXYUSERPWD |
一個(gè)用來(lái)連接到代理的"[username]:[password]" 格式的字符串。
|
|
CURLOPT_RANDOM_FILE |
一個(gè)被用來(lái)生成 SSL 隨機(jī)數(shù)種子的文件名。 | |
CURLOPT_RANGE |
以"X-Y" 的形式,其中X和Y都是可選項(xiàng)獲取數(shù)據(jù)的范圍,以字節(jié)計(jì)。HTTP傳輸線程也支持幾個(gè)這樣的重復(fù)項(xiàng)中間用逗號(hào)分隔如"X-Y,N-M" 。
|
|
CURLOPT_REFERER |
在HTTP請(qǐng)求頭中"Referer: " 的內(nèi)容。
|
|
CURLOPT_SERVICE_NAME |
驗(yàn)證服務(wù)的名稱 | cURL 7.43.0 起添加,自 PHP 7.0.7 有效。 |
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 |
包含 32 位長(zhǎng)的 16 進(jìn)制數(shù)值。這個(gè)字符串應(yīng)該是遠(yuǎn)程主機(jī)公鑰(public key) 的 MD5 校驗(yàn)值。在不匹配的時(shí)候 libcurl 會(huì)拒絕連接。 此選項(xiàng)僅用于 SCP 和 SFTP 的傳輸。 | cURL 7.17.1 中添加。 |
CURLOPT_SSH_PUBLIC_KEYFILE |
The file name for your public key. If not used, libcurl defaults to $HOME/.ssh/id_dsa.pub if the HOME environment variable is set, and just "id_dsa.pub" in the current directory if HOME is not set. | Added in cURL 7.16.1. |
CURLOPT_SSH_PRIVATE_KEYFILE |
The file name for your private key. If not used, libcurl defaults to
$HOME/.ssh/id_dsa if the HOME environment variable is set,
and just "id_dsa" in the current directory if HOME is not set.
If the file is password-protected, set the password with
CURLOPT_KEYPASSWD .
|
Added in cURL 7.16.1. |
CURLOPT_SSL_CIPHER_LIST |
一個(gè)SSL的加密算法列表。例如RC4-SHA 和TLSv1 都是可用的加密列表。
|
|
CURLOPT_SSLCERT |
一個(gè)包含 PEM 格式證書(shū)的文件名。 | |
CURLOPT_SSLCERTPASSWD |
使用CURLOPT_SSLCERT 證書(shū)需要的密碼。
|
|
CURLOPT_SSLCERTTYPE |
證書(shū)的類型。支持的格式有"PEM" (默認(rèn)值), "DER" 和"ENG" 。
|
在 cURL 7.9.3中 被加入。 |
CURLOPT_SSLENGINE |
用來(lái)在CURLOPT_SSLKEY 中指定的SSL私鑰的加密引擎變量。
|
|
CURLOPT_SSLENGINE_DEFAULT |
用來(lái)做非對(duì)稱加密操作的變量。 | |
CURLOPT_SSLKEY |
包含 SSL 私鑰的文件名。 | |
CURLOPT_SSLKEYPASSWD |
在
|
|
CURLOPT_SSLKEYTYPE |
CURLOPT_SSLKEY 中規(guī)定的私鑰的加密類型,支持的密鑰類型為"PEM" (默認(rèn)值)、"DER" 和"ENG" 。
|
|
CURLOPT_UNIX_SOCKET_PATH |
使用 Unix 套接字作為連接,并用指定的 string 作為路徑。 | cURL 7.40.0 中添加, PHP 7.0.7 起有效。 |
CURLOPT_URL |
需要獲取的 URL 地址,也可以在curl_init() 初始化會(huì)話的時(shí)候。 | |
CURLOPT_USERAGENT |
在HTTP請(qǐng)求中包含一個(gè)"User-Agent: " 頭的字符串。
|
|
CURLOPT_USERNAME |
驗(yàn)證中使用的用戶名。 | cURL 7.19.1 中添加,PHP 5.5.0 起有效。 |
CURLOPT_USERPWD |
傳遞一個(gè)連接中需要的用戶名和密碼,格式為:"[username]:[password]" 。
|
|
CURLOPT_XOAUTH2_BEARER |
指定 OAuth 2.0 access token。 | cURL 7.33.0 中添加,自 PHP 7.0.7 添加。 |
以下option
,value
應(yīng)該被設(shè)置成數(shù)組:
選項(xiàng) | 可選value 值 |
備注 |
---|---|---|
CURLOPT_CONNECT_TO |
連接到指定的主機(jī)和端口,替換 URL 中的主機(jī)和端口。接受指定字符串格式的數(shù)組:
HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT 。
|
cURL 7.49.0 中添加, PHP 7.0.7 起有效。 |
CURLOPT_HTTP200ALIASES |
HTTP 200 響應(yīng)碼數(shù)組,數(shù)組中的響應(yīng)碼被認(rèn)為是正確的響應(yīng),而非錯(cuò)誤。 | 在 cURL 7.10.3 中被加入。 |
CURLOPT_HTTPHEADER |
設(shè)置 HTTP 頭字段的數(shù)組。格式:
array('Content-type: text/plain', 'Content-length: 100')
|
|
CURLOPT_POSTQUOTE |
在 FTP 請(qǐng)求執(zhí)行完成后,在服務(wù)器上執(zhí)行的一組array格式的 FTP 命令。 | |
CURLOPT_PROXYHEADER |
傳給代理的自定義 HTTP 頭。 | cURL 7.37.0 中添加,自 PHP 7.0.7 添加。 |
CURLOPT_QUOTE |
一組先于 FTP 請(qǐng)求的在服務(wù)器上執(zhí)行的FTP命令。 | |
CURLOPT_RESOLVE |
提供自定義地址,指定了主機(jī)和端口。
包含主機(jī)、端口和 ip 地址的字符串,組成 array 的,每個(gè)元素以冒號(hào)分隔。格式:
array("example.com:80:127.0.0.1")
|
在 cURL 7.21.3 中添加,自 PHP 5.5.0 起可用。 |
以下 option
,value
應(yīng)該被設(shè)置成流資源
(例如使用fopen()):
選項(xiàng) | 可選value 值 |
---|---|
CURLOPT_FILE |
設(shè)置輸出文件,默認(rèn)為STDOUT (瀏覽器)。
|
CURLOPT_INFILE |
上傳文件時(shí)需要讀取的文件。 |
CURLOPT_STDERR |
錯(cuò)誤輸出的地址,取代默認(rèn)的STDERR 。
|
CURLOPT_WRITEHEADER |
設(shè)置 header 部分內(nèi)容的寫(xiě)入的文件地址。 |
以下option
的 value
應(yīng)該是有效的函數(shù)或者閉包:
選項(xiàng) | value 值 |
---|---|
CURLOPT_HEADERFUNCTION |
設(shè)置一個(gè)回調(diào)函數(shù),這個(gè)函數(shù)有兩個(gè)參數(shù),第一個(gè)是cURL的資源句柄,第二個(gè)是輸出的 header 數(shù)據(jù)。header數(shù)據(jù)的輸出必須依賴這個(gè)函數(shù),返回已寫(xiě)入的數(shù)據(jù)大小。 |
CURLOPT_PASSWDFUNCTION |
設(shè)置一個(gè)回調(diào)函數(shù),有三個(gè)參數(shù),第一個(gè)是cURL的資源句柄,第二個(gè)是一個(gè)密碼提示符,第三個(gè)參數(shù)是密碼長(zhǎng)度允許的最大值。返回密碼的值。 |
CURLOPT_PROGRESSFUNCTION |
設(shè)置一個(gè)回調(diào)函數(shù),有五個(gè)參數(shù),第一個(gè)是cURL的資源句柄,第二個(gè)是預(yù)計(jì)要下載的總字節(jié)(bytes)數(shù)。第三個(gè)是目前下載的字節(jié)數(shù),第四個(gè)是預(yù)計(jì)傳輸中總上傳字節(jié)數(shù),第五個(gè)是目前上傳的字節(jié)數(shù)。
返回非零值將中斷傳輸。
傳輸將設(shè)置 |
CURLOPT_READFUNCTION |
回調(diào)函數(shù)名。該函數(shù)應(yīng)接受三個(gè)參數(shù)。第一個(gè)是 cURL resource;第二個(gè)是通過(guò)選項(xiàng)
CURLOPT_INFILE 傳給 cURL 的 stream resource;第三個(gè)參數(shù)是最大可以讀取的數(shù)據(jù)的數(shù)量?;?調(diào)函數(shù)必須返回一個(gè)字符串,長(zhǎng)度小于或等于請(qǐng)求的數(shù)據(jù)量(第三個(gè)參數(shù))。一般從傳入的 stream
resource 讀取。返回空字符串作為 EOF (文件結(jié)束) 信號(hào)。
|
CURLOPT_WRITEFUNCTION |
回調(diào)函數(shù)名。該函數(shù)應(yīng)接受兩個(gè)參數(shù)。第一個(gè)是 cURL resource;第二個(gè)是要寫(xiě)入的數(shù)據(jù)字符串。數(shù) 據(jù)必須在函數(shù)中被保存。 函數(shù)必須準(zhǔn)確返回寫(xiě)入數(shù)據(jù)的字節(jié)數(shù),否則傳輸會(huì)被一個(gè)錯(cuò)誤所中 斷。 |
其他值:
Option | 設(shè)置 value 為 |
---|---|
CURLOPT_SHARE |
curl_share_init() 返回的結(jié)果。 使 cURL 可以處理共享句柄里的數(shù)據(jù)。 |
成功時(shí)返回 true
, 或者在失敗時(shí)返回 false
。
版本 | 說(shuō)明 |
---|---|
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 。
|
示例 #1 初始化一個(gè)新的cURL會(huì)話并獲取一個(gè)網(wǎng)頁(yè)
<?php
// 創(chuàng)建一個(gè)新cURL資源
$ch = curl_init();
// 設(shè)置URL和相應(yīng)的選項(xiàng)
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// 抓取URL并把它傳遞給瀏覽器
curl_exec($ch);
//關(guān)閉cURL資源,并且釋放系統(tǒng)資源
curl_close($ch);
?>
示例 #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 后必須開(kāi)啟
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
以上例程會(huì)輸出:
Array ( [name] => Foo ) Array ( [file] => Array ( [name] => test.png [type] => image/png [tmp_name] => /tmp/phpcpjNeQ [error] => 0 [size] => 279 ) )
注意:
傳遞一個(gè)數(shù)組到
CURLOPT_POSTFIELDS
,cURL會(huì)把數(shù)據(jù)編碼成 multipart/form-data,而然傳遞一個(gè)URL-encoded字符串時(shí),數(shù)據(jù)會(huì)被編碼成 application/x-www-form-urlencoded。