首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP cURL 選項完整參考手冊(按參數類型分類)

     編輯:PHP 綜合知識

分類說明

cURL 選項按 curl_setopt($ch, OPTION, VALUE) 中 VALUE 的資料型別分為五大類:布林、整數、字串、陣列、資源/回調。本文整理官方常用選項,附中文備註與版本資訊。

一、布林值選項(VALUE = true/false)

常數作用備註
CURLOPT_AUTOREFERER重定向時自動帶 Referer
CURLOPT_BINARYTRANSFER配合 RETURNTRANSFER 回傳原始二進位
CURLOPT_COOKIESESSION僅傳送 Session Cookie,忽略持久 Cookie
CURLOPT_CRLFUnix 換行 \n 轉 \r\n
CURLOPT_DNS_USE_GLOBAL_CACHE啟用全域 DNS 快取(執行緒安全)預設開啟
CURLOPT_FAILONERRORHTTP 狀態碼 ≥ 400 視為失敗預設忽略
CURLOPT_FILETIME嘗試取得遠端檔案修改時間透過 curl_getinfo(CURLINFO_FILETIME) 取得
CURLOPT_FOLLOWLOCATION自動追蹤 Location 重定向配合 CURLOPT_MAXREDIRS 限制層數
CURLOPT_FORBID_REUSE完成後強制關閉連線,不重用
CURLOPT_FRESH_CONNECT強制建立新連線,不使用連線池
CURLOPT_FTP_USE_EPRTFTP 使用 EPRT/LPRT 指令false 則用 PORT
CURLOPT_FTP_USE_EPSVFTP 優先嘗試 EPSVfalse 禁用
CURLOPT_FTPAPPENDFTP 上傳採追加模式
CURLOPT_FTPASCIIFTP ASCII 模式傳輸同 CURLOPT_TRANSFERTEXT
CURLOPT_FTPLISTONLYFTP 僅列出目錄名稱
CURLOPT_HEADER輸出包含 Header
CURLINFO_HEADER_OUT記錄發送的請求 Header 字串PHP 5.1.3+,供除錯
CURLOPT_HTTPGET強制 GET 方法預設即 GET
CURLOPT_HTTPPROXYTUNNEL透過 HTTP Proxy 通道傳輸
CURLOPT_MUTE重設所有選項為預設值
CURLOPT_NETRC從 ~/.netrc 讀取帳密
CURLOPT_NOBODY不輸出 Body(HEAD 請求)
CURLOPT_NOPROGRESS關閉進度條預設 true,僅除錯時改 false
CURLOPT_NOSIGNAL忽略 cURL 發給 PHP 的訊號多執行緒 SAPI 預設開啟
CURLOPT_POST發送 POST 請求Content-Type: application/x-www-form-urlencoded
CURLOPT_PUT啟用 HTTP PUT 上傳需配合 INFILE/INFILESIZE
CURLOPT_RETURNTRANSFER回傳字串而非直接輸出最常用
CURLOPT_SSL_VERIFYPEER驗證 Peer 憑證生產環境建議 true,配合 CAINFO
CURLOPT_TRANSFERTEXTFTP/ASCII 模式Windows 下 STDOUT 不會設 binary
CURLOPT_UNRESTRICTED_AUTH重定向時保持認證資訊跨域傳送
CURLOPT_UPLOAD啟用上傳模式
CURLOPT_VERBOSE輸出詳細除錯資訊到 STDERR

二、整數值選項

常數作用備註
CURLOPT_BUFFERSIZE讀取緩衝區大小cURL 7.10+
CURLOPT_CLOSEPOLICY連線關閉策略目前僅支援 LEAST_RECENTLY_USED / OLDEST
CURLOPT_CONNECTTIMEOUT連線階段逾時(秒)0 = 無限等待
CURLOPT_CONNECTTIMEOUT_MS連線逾時(毫秒)cURL 7.16.2+, PHP 5.2.3+
CURLOPT_DNS_CACHE_TIMEOUTDNS 快取壽命(秒)預設 120
CURLOPT_FTPSSLAUTHFTP SSL 驗證方式SSL/TLS/DEFAULT
CURLOPT_HTTP_VERSION強制 HTTP 版本NONE/1.0/1.1
CURLOPT_HTTPAUTHHTTP 認證方法位元遮罩BASIC|DIGEST|GSSNEGOTIATE|NTLM|ANY|ANYSAFE
CURLOPT_INFILESIZE上傳檔案大小限制(Bytes)
CURLOPT_LOW_SPEED_LIMIT低速門檻配合 LOW_SPEED_TIME 判斷中斷
CURLOPT_LOW_SPEED_TIME低速持續秒數
CURLOPT_MAXCONNECTS最大連線數超過依 CLOSEPOLICY 關閉
CURLOPT_MAXREDIRS最大重定向次數配合 FOLLOWLOCATION
CURLOPT_PORT指定連接埠可選
CURLOPT_PROTOCOLS允許使用的協議位元遮罩HTTP/HTTPS/FTP/FTPS/SCP/SFTP/...
CURLOPT_PROXYAUTHProxy 認證方法僅 BASIC/NTLM
CURLOPT_PROXYPORTProxy 連接埠
CURLOPT_PROXYTYPEProxy 類型HTTP (預設) / SOCKS5
CURLOPT_REDIR_PROTOCOLS重定向允許的協議預設除 FILE/SCP 外全開
CURLOPT_RESUME_FROM斷點續傳位移(Bytes)
CURLOPT_SSL_VERIFYHOST驗證 SSL Common Name1=存在/2=存在且匹配主機名
CURLOPT_SSLVERSION指定 SSL 版本2/3/TLSv1,預設自動協商
CURLOPT_TIMECONDITION時間條件模式IFMODSINCE/IFUNMODSINCE
CURLOPT_TIMEOUT總執行逾時(秒)
CURLOPT_TIMEOUT_MS總執行逾時(毫秒)cURL 7.16.2+, PHP 5.2.3+
CURLOPT_TIMEVALUE時間條件用的時間戳

三、字串值選項

常數作用備註
CURLOPT_CAINFOCA 憑證檔路徑配合 SSL_VERIFYPEER
CURLOPT_CAPATHCA 憑證目錄
CURLOPT_COOKIE手動設定 Cookie 字串name=val; name2=val2
CURLOPT_COOKIEFILE讀取 Cookie 檔Netscape 格式或純 Header
CURLOPT_COOKIEJAR寫入 Cookie 檔連線結束時儲存
CURLOPT_CUSTOMREQUEST自定義 HTTP MethodDELETE, PATCH 等,勿填完整請求行
CURLOPT_EGDSOCKETEGD Socket 路徑類似 RANDOM_FILE
CURLOPT_ENCODINGAccept-Encodingidentity, deflate, gzip,空字串=全支援
CURLOPT_FTPPORTFTP PORT 指令用 IPIP/主機名/介面名/-
CURLOPT_INTERFACE出網介面/IP/主機名
CURLOPT_KRB4LEVELKerberos 4 安全等級clear/safe/confidential/private
CURLOPT_POSTFIELDSPOST 資料字串 a=1&b=2 或陣列(自動 multipart/form-data)
CURLOPT_PROXYHTTP Proxy 位址host:port
CURLOPT_PROXYUSERPWDProxy 帳密user:pass
CURLOPT_RANDOM_FILESSL 隨機種子檔
CURLOPT_RANGERange 請求範圍X-Y 或 X-Y,N-M
CURLOPT_REFERERReferer Header
CURLOPT_SSL_CIPHER_LISTSSL 加密套件列表RC4-SHA:TLSv1
CURLOPT_SSLCERT客戶端憑證檔 (PEM)
CURLOPT_SSLCERTPASSWD客戶端憑證密碼
CURLOPT_SSLCERTTYPE憑證格式PEM/DER/ENG
CURLOPT_SSLENGINESSL 引擎名稱
CURLOPT_SSLENGINE_DEFAULT設為預設非對稱加密引擎
CURLOPT_SSLKEY私鑰檔
CURLOPT_SSLKEYPASSWD私鑰密碼敏感資訊,注意腳本權限
CURLOPT_SSLKEYTYPE私鑰格式PEM/DER/ENG
CURLOPT_URL目標 URL也可在 curl_init() 給定
CURLOPT_USERAGENTUser-Agent 字串
CURLOPT_USERPWDHTTP 認證帳密user:pass

四、陣列值選項

常數作用備註
CURLOPT_HTTP200ALIASES視為成功的 HTTP 狀態碼陣列cURL 7.10.3+
CURLOPT_HTTPHEADER自定義請求 Header 陣列['Content-Type: application/json', 'Authorization: Bearer xxx']
CURLOPT_POSTQUOTEFTP 傳輸後執行的指令陣列
CURLOPT_QUOTEFTP 傳輸前執行的指令陣列

五、資源型別選項(需 fopen() 回傳的 handle)

常數作用預設
CURLOPT_FILE輸出寫入檔案STDOUT
CURLOPT_INFILE上傳讀取檔案—
CURLOPT_STDERR錯誤輸出導向STDERR
CURLOPT_WRITEHEADERHeader 寫入檔案—

六、回調函數選項

常數回調簽名回傳值用途
CURLOPT_HEADERFUNCTIONfn($ch, $headerStr) : int已寫入長度自行處理 Header
CURLOPT_PASSWDFUNCTIONfn($ch, $prompt, $maxLen) : string密碼字串互動式取密碼
CURLOPT_PROGRESSFUNCTIONfn($ch, $dlTotal, $dlNow, $ulTotal, $ulNow) : int0 繼續 / 非 0 中止進度條
CURLOPT_READFUNCTIONfn($ch, $fd, $length) : string資料字串,空=EOF自定義讀取上傳資料
CURLOPT_WRITEFUNCTIONfn($ch, $data) : int已寫入長度自行處理 Body(流式處理大檔案)

常用組合範例

<?php
$ch = curl_init('https://api.example.com/users');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 10,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $token, 'Accept: application/json'],
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_CAINFO         => __DIR__ . '/cacert.pem',
]);
$resp = curl_exec($ch);
if ($resp === false) {
    throw new Exception(curl_error($ch), curl_errno($ch));
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved