[英]Default cURL option values
我今天正在重構我的 cURL 類並考慮查看 cURL FLAGS 的默認值。
誰能告訴我在哪里可以找到或如何輸出它們?
PS:如果可能的話。
我今天一直在研究同樣的問題,並遇到了這個(相當舊的)帖子。 由於它幾乎出現在 Google 的頂部,我認為這是結束我研究的地方。
簡而言之:這是不可能的。
似乎大多數 cURL 選項甚至沒有任何默認值。 例如,超時。或者用戶代理。 但是許多其他人確實有默認值,如PHP 手冊所述。 我找不到任何默認值列表 - 既不是 PHP 的 cURL 擴展,也不是一般的 cURL。 僅在所述 PHP 手冊或cURL API 文檔中提到的個別默認值。 但是,我懷疑這些頁面中是否提到了每個默認值。
不幸的是,以編程方式找出它們也是不可能的。 這個想法是在設置第一個之前找出所有選項值。 但是沒有curl_getopt()
。 甚至在 cURL 本身中也沒有。 所有模擬curl_getopt()
解決方案只能檢索那些手動設置的選項。
在(非常)短暫地瀏覽了 cURL 源代碼(原始 C 庫)之后,我還懷疑有時沒有真正的默認值,但是如果未設置選項,則某些邏輯會用於確定要使用的值。 在這種情況下,默認值甚至不會被很好地定義。
最后,PHP 的 cURL 擴展可能使用了一些與 cURL 本身不同的默認值。
因此,除非某些 cURL 開發人員對此有所了解 - 或者至少是有時間和技能真正深入研究代碼的人 - 我們幾乎被困在這一點上。
雖然curl_setopt()
的 PHP 文檔列舉了可用選項的列表,但它不會*顯示 PHP 為每個連接設置的默認值(默認值,當然,除非您覆蓋它們)。
您可以在ext/curl/interface.c文件中查看 PHP 為 curl 設置的這些默認選項,調用_php_curl_set_default_options(php_curl *ch)
。
當前,默認選項 + 值為:
// "value" options
CURLOPT_NOPROGRESS => 1
CURLOPT_VERBOSE => 0
CURLOPT_DNS_CACHE_TIMEOUT => 120
CURLOPT_MAXREDIRS => 20
// callback functions
CURLOPT_WRITEFUNCTION => curl_write
CURLOPT_READFUNCTION => curl_read
CURLOPT_HEADERFUNCTION => curl_write_header
// file/stream references
CURLOPT_INFILE => (void *)ch
CURLOPT_FILE => (void *)ch
CURLOPT_WRITEHEADER => (void *)ch
CURLOPT_ERRORBUFFER => ch->err.str
// If ZTS (Zend Thread Safety) *is* enabled
CURLOPT_NOSIGNAL => 1
// If ZTS (Zend Thread Safety) *is not* enabled
CURLOPT_DNS_USE_GLOBAL_CACHE => 1
// OpenSSL CA File (`cainfo` = either in openssl.cafile, curl.cainfo or it doesn't exist)
// note: if the file doesn't exist, this option isn't set
CURLOPT_CAINFO => cainfo
* 注意:php 文檔確實提到它為CURLOPT_NOPROGRESS
設置了默認值:
PHP 自動將此選項設置為TRUE ,僅應出於調試目的更改此選項。
如果您對 curl 的一般默認行為感到好奇,可以查看curl_easy_setopt()
和curl_setopt()
文檔中的各個選項。 前者對每一個都給出了非常詳細的描述,后者是一個概括性的總結。 兩者都列出了 curl 沒有設置選項的默認行為。
這將顯示“CURL*”常量名稱及其值:
foreach (get_defined_constants() as $name => $val) {
if (strpos($name, 'CURL') === 0) {
echo $name . ' => ' . $val . "\n";
}
}
當然,僅對於 curl 選項值,將“CURL”更改為“CURLOPT_”。
(如果您想在腳本中使用整數值而不是常量名稱,則不應該。)
獲取要編輯的CURLOPT
配置選項的代碼:
foreach (get_defined_constants() as $key => $val) {
if (strpos($key, 'CURLOPT_') === 0) {
echo $key . ' => ' . $val . "\n";
}
}
以下是我在 CentOS 7 上安裝 PHP 5.6.30 時的默認 PHP CURL 設置:
CURLOPT_AUTOREFERER
58CURLOPT_BINARYTRANSFER
19914CURLOPT_BUFFERSIZE
98CURLOPT_CAINFO
10065CURLOPT_CAPATH
10097CURLOPT_CONNECTTIMEOUT
78CURLOPT_COOKIE
10022CURLOPT_COOKIEFILE
10031CURLOPT_COOKIEJAR
10082CURLOPT_COOKIESESSION
96CURLOPT_CRLF
27CURLOPT_CUSTOMREQUEST
10036CURLOPT_DNS_CACHE_TIMEOUT
92CURLOPT_DNS_USE_GLOBAL_CACHE
91CURLOPT_EGDSOCKET
10077CURLOPT_ENCODING
10102CURLOPT_FAILONERROR
45CURLOPT_FILE
10001CURLOPT_FILETIME
69CURLOPT_FOLLOWLOCATION
52CURLOPT_FORBID_REUSE
75CURLOPT_FRESH_CONNECT
74CURLOPT_FTPAPPEND
50CURLOPT_FTPLISTONLY
48CURLOPT_FTPPORT
10017CURLOPT_FTP_USE_EPRT
106CURLOPT_FTP_USE_EPSV
85CURLOPT_HEADER
42CURLOPT_HEADERFUNCTION
20079CURLOPT_HTTP200ALIASES
10104CURLOPT_HTTPGET
80CURLOPT_HTTPHEADER
10023CURLOPT_HTTPPROXYTUNNEL
61CURLOPT_HTTP_VERSION
84CURLOPT_INFILE
10009CURLOPT_INFILESIZE
14CURLOPT_INTERFACE
10062CURLOPT_KRB4LEVEL
10063CURLOPT_LOW_SPEED_LIMIT
19CURLOPT_LOW_SPEED_TIME
20CURLOPT_MAXCONNECTS
71CURLOPT_MAXREDIRS
68CURLOPT_NETRC
51CURLOPT_NOBODY
44CURLOPT_NOPROGRESS
43CURLOPT_NOSIGNAL
99CURLOPT_PORT
3CURLOPT_POST
47CURLOPT_POSTFIELDS
10015CURLOPT_POSTQUOTE
10039CURLOPT_PREQUOTE
10093CURLOPT_PRIVATE
10103CURLOPT_PROGRESSFUNCTION
20056CURLOPT_PROXY
10004CURLOPT_PROXYPORT
59CURLOPT_PROXYTYPE
101CURLOPT_PROXYUSERPWD
10006CURLOPT_PUT
54CURLOPT_QUOTE
10028CURLOPT_RANDOM_FILE
10076CURLOPT_RANGE
10007CURLOPT_READDATA
10009CURLOPT_READFUNCTION
20012CURLOPT_REFERER
10016CURLOPT_RESUME_FROM
21CURLOPT_RETURNTRANSFER
19913CURLOPT_SHARE
10100CURLOPT_SSLCERT
10025CURLOPT_SSLCERTPASSWD
10026CURLOPT_SSLCERTTYPE
10086CURLOPT_SSLENGINE
10089CURLOPT_SSLENGINE_DEFAULT
90CURLOPT_SSLKEY
10087CURLOPT_SSLKEYPASSWD
10026CURLOPT_SSLKEYTYPE
10088CURLOPT_SSLVERSION
32CURLOPT_SSL_CIPHER_LIST
10083CURLOPT_SSL_VERIFYHOST
81CURLOPT_SSL_VERIFYPEER
64CURLOPT_STDERR
10037CURLOPT_TELNETOPTIONS
10070CURLOPT_TIMECONDITION
33CURLOPT_TIMEOUT
13CURLOPT_TIMEVALUE
34CURLOPT_TRANSFERTEXT
53CURLOPT_UNRESTRICTED_AUTH
105CURLOPT_UPLOAD
46CURLOPT_URL
10002CURLOPT_USERAGENT
10018CURLOPT_USERPWD
10005CURLOPT_VERBOSE
41CURLOPT_WRITEFUNCTION
20011CURLOPT_WRITEHEADER
10029CURLOPT_HTTPAUTH
107CURLOPT_FTP_CREATE_MISSING_DIRS
110CURLOPT_PROXYAUTH
111 章CURLOPT_FTP_RESPONSE_TIMEOUT
112CURLOPT_IPRESOLVE
113 章CURLOPT_MAXFILESIZE
114CURLOPT_FTP_SSL
119CURLOPT_NETRC_FILE
10118CURLOPT_FTPSSLAUTH
129 章CURLOPT_FTP_ACCOUNT
10134CURLOPT_TCP_NODELAY
121CURLOPT_COOKIELIST
10135CURLOPT_IGNORE_CONTENT_LENGTH
136CURLOPT_FTP_SKIP_PASV_IP
137CURLOPT_FTP_FILEMETHOD
138 章CURLOPT_CONNECT_ONLY
141 章CURLOPT_LOCALPORT
139 章CURLOPT_LOCALPORTRANGE
140CURLOPT_FTP_ALTERNATIVE_TO_USER
10147CURLOPT_MAX_RECV_SPEED_LARGE
30146CURLOPT_MAX_SEND_SPEED_LARGE
30145CURLOPT_SSL_SESSIONID_CACHE
150CURLOPT_FTP_SSL_CCC
154CURLOPT_SSH_AUTH_TYPES
151CURLOPT_SSH_PRIVATE_KEYFILE
10153CURLOPT_SSH_PUBLIC_KEYFILE
10152CURLOPT_CONNECTTIMEOUT_MS
156CURLOPT_HTTP_CONTENT_DECODING
158CURLOPT_HTTP_TRANSFER_DECODING
157 章CURLOPT_TIMEOUT_MS
155CURLOPT_KRBLEVEL
10063CURLOPT_NEW_DIRECTORY_PERMS
160CURLOPT_NEW_FILE_PERMS
159 章CURLOPT_APPEND
50CURLOPT_DIRLISTONLY
48CURLOPT_USE_SSL
119CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
10162CURLOPT_PROXY_TRANSFER_MODE
166CURLOPT_ADDRESS_SCOPE
171 章CURLOPT_CRLFILE
10169CURLOPT_ISSUERCERT
10170CURLOPT_KEYPASSWD
10026CURLOPT_CERTINFO
172 章CURLOPT_PASSWORD
10174CURLOPT_POSTREDIR
161 章CURLOPT_PROXYPASSWORD
10176CURLOPT_PROXYUSERNAME
10175CURLOPT_USERNAME
10173CURLOPT_NOPROXY
10177CURLOPT_PROTOCOLS
181 章CURLOPT_REDIR_PROTOCOLS
182 章CURLOPT_SOCKS5_GSSAPI_NEC
180CURLOPT_SOCKS5_GSSAPI_SERVICE
10179CURLOPT_TFTP_BLKSIZE
178CURLOPT_SSH_KNOWNHOSTS
10183CURLOPT_FTP_USE_PRET
188 章CURLOPT_MAIL_FROM
10186CURLOPT_MAIL_RCPT
10187CURLOPT_RTSP_CLIENT_CSEQ
193CURLOPT_RTSP_REQUEST
189CURLOPT_RTSP_SERVER_CSEQ
194CURLOPT_RTSP_SESSION_ID
10190CURLOPT_RTSP_STREAM_URI
10191CURLOPT_RTSP_TRANSPORT
10192CURLOPT_FNMATCH_FUNCTION
20200CURLOPT_WILDCARDMATCH
197 章CURLOPT_RESOLVE
10203CURLOPT_TLSAUTH_PASSWORD
10205CURLOPT_TLSAUTH_TYPE
10206CURLOPT_TLSAUTH_USERNAME
10204CURLOPT_ACCEPT_ENCODING
10102CURLOPT_TRANSFER_ENCODING
207 章CURLOPT_GSSAPI_DELEGATION
210CURLOPT_ACCEPTTIMEOUT_MS
212CURLOPT_DNS_SERVERS
10211CURLOPT_MAIL_AUTH
10217CURLOPT_SSL_OPTIONS
216 章CURLOPT_TCP_KEEPALIVE
213CURLOPT_TCP_KEEPIDLE
214CURLOPT_TCP_KEEPINTVL
215CURLOPT_SAFE_UPLOAD
-1在這里我們可以找到所有默認值: https : //curl.haxx.se/libcurl/c/curl_easy_setopt.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.