[英]Default cURL option values
I was refactoring my cURL class today and thought about looking at default values of cURL FLAGS.我今天正在重构我的 cURL 类并考虑查看 cURL FLAGS 的默认值。
Could anyone tell me where I might find or how could I output them?谁能告诉我在哪里可以找到或如何输出它们?
PS: If it's possible at all. PS:如果可能的话。
I have been researching the same problem today and came across this (rather old) post.我今天一直在研究同样的问题,并遇到了这个(相当旧的)帖子。 Since it shows up pretty much at the top of Google, I thought this is the place to conclude my research.由于它几乎出现在 Google 的顶部,我认为这是结束我研究的地方。
In short: It's not possible.简而言之:这是不可能的。
It seems like most cURL options do not even have any default values.似乎大多数 cURL 选项甚至没有任何默认值。 For example , timeouts . 例如,超时。Or the user agent .或者用户代理。 But many others do have defaults, as the PHP manual states.但是许多其他人确实有默认值,如PHP 手册所述。 I could not find any list of default values - neither for PHP's cURL extension, nor for cURL in general.我找不到任何默认值列表 - 既不是 PHP 的 cURL 扩展,也不是一般的 cURL。 Only individual defaults that are mentioned within said PHP manual or within the cURL API doc .仅在所述 PHP 手册或cURL API 文档中提到的个别默认值。 However, I doubt that every single default is mentioned within those pages.但是,我怀疑这些页面中是否提到了每个默认值。
Unfortunately, finding them out programmatically is not possible, either.不幸的是,以编程方式找出它们也是不可能的。 The idea would be to find out all options values before setting the first one.这个想法是在设置第一个之前找出所有选项值。 But there is no curl_getopt()
.但是没有curl_getopt()
。 Not even in cURL itself.甚至在 cURL 本身中也没有。 All solutions that emulate curl_getopt()
can only retrieve those options that have been set manually.所有模拟curl_getopt()
解决方案只能检索那些手动设置的选项。
After a (very) short glance at the cURL source code (the original C lib) I also suspect that sometimes there are no real defaults, but if an option is not set, some logic goes into figuring out which value to use.在(非常)短暂地浏览了 cURL 源代码(原始 C 库)之后,我还怀疑有时没有真正的默认值,但是如果未设置选项,则某些逻辑会用于确定要使用的值。 In that case, default values would not even be well-defined.在这种情况下,默认值甚至不会被很好地定义。
Lastly, chances are that PHP's cURL extension employs some different defaults than cURL itself.最后,PHP 的 cURL 扩展可能使用了一些与 cURL 本身不同的默认值。
So unless some cURL developer sheds some light on this - or at least someone who has the time and skill to really dive into the code - we are pretty much stuck on this.因此,除非某些 cURL 开发人员对此有所了解 - 或者至少是有时间和技能真正深入研究代码的人 - 我们几乎被困在这一点上。
While the PHP Docs for curl_setopt()
enumerate the list of available options, it doesn't* show the defaults that PHP sets for every connection (default, until you overwrite them of course).虽然curl_setopt()
的 PHP 文档列举了可用选项的列表,但它不会*显示 PHP 为每个连接设置的默认值(默认值,当然,除非您覆盖它们)。
You can view these default options PHP sets for curl in the ext/curl/interface.c file, in a call to _php_curl_set_default_options(php_curl *ch)
.您可以在ext/curl/interface.c文件中查看 PHP 为 curl 设置的这些默认选项,调用_php_curl_set_default_options(php_curl *ch)
。
At the current time, the default options + values are:当前,默认选项 + 值为:
// "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
* Note: The php doc does mention that it sets the default for CURLOPT_NOPROGRESS
: * 注意:php 文档确实提到它为CURLOPT_NOPROGRESS
设置了默认值:
PHP automatically sets this option to TRUE , this should only be changed for debugging purposes. PHP 自动将此选项设置为TRUE ,仅应出于调试目的更改此选项。
If you're curious about general default behavior of curl, you can view the individual options in the documentation for curl_easy_setopt()
and curl_setopt()
.如果您对 curl 的一般默认行为感到好奇,可以查看curl_easy_setopt()
和curl_setopt()
文档中的各个选项。 The former gives a very detailed description of each, the latter a general summary.前者对每一个都给出了非常详细的描述,后者是一个概括性的总结。 Both list the default behavior of curl without the option(s) set.两者都列出了 curl 没有设置选项的默认行为。
This will display the "CURL*" constant names and their values:这将显示“CURL*”常量名称及其值:
foreach (get_defined_constants() as $name => $val) {
if (strpos($name, 'CURL') === 0) {
echo $name . ' => ' . $val . "\n";
}
}
For just the curl option values, change 'CURL' to 'CURLOPT_', of course.当然,仅对于 curl 选项值,将“CURL”更改为“CURLOPT_”。
(If you're thinking of using the integer values instead of the constant names in your script, you shouldn't.) (如果您想在脚本中使用整数值而不是常量名称,则不应该。)
Code to get the CURLOPT
configuration options you will want to edit:获取要编辑的CURLOPT
配置选项的代码:
foreach (get_defined_constants() as $key => $val) {
if (strpos($key, 'CURLOPT_') === 0) {
echo $key . ' => ' . $val . "\n";
}
}
Following are the default PHP CURL settings on my installation of PHP 5.6.30 on CentOS 7:以下是我在 CentOS 7 上安装 PHP 5.6.30 时的默认 PHP CURL 设置:
CURLOPT_AUTOREFERER
58 CURLOPT_AUTOREFERER
58CURLOPT_BINARYTRANSFER
19914 CURLOPT_BINARYTRANSFER
19914CURLOPT_BUFFERSIZE
98 CURLOPT_BUFFERSIZE
98CURLOPT_CAINFO
10065 CURLOPT_CAINFO
10065CURLOPT_CAPATH
10097 CURLOPT_CAPATH
10097CURLOPT_CONNECTTIMEOUT
78 CURLOPT_CONNECTTIMEOUT
78CURLOPT_COOKIE
10022 CURLOPT_COOKIE
10022CURLOPT_COOKIEFILE
10031 CURLOPT_COOKIEFILE
10031CURLOPT_COOKIEJAR
10082 CURLOPT_COOKIEJAR
10082CURLOPT_COOKIESESSION
96 CURLOPT_COOKIESESSION
96CURLOPT_CRLF
27 CURLOPT_CRLF
27CURLOPT_CUSTOMREQUEST
10036 CURLOPT_CUSTOMREQUEST
10036CURLOPT_DNS_CACHE_TIMEOUT
92 CURLOPT_DNS_CACHE_TIMEOUT
92CURLOPT_DNS_USE_GLOBAL_CACHE
91 CURLOPT_DNS_USE_GLOBAL_CACHE
91CURLOPT_EGDSOCKET
10077 CURLOPT_EGDSOCKET
10077CURLOPT_ENCODING
10102 CURLOPT_ENCODING
10102CURLOPT_FAILONERROR
45 CURLOPT_FAILONERROR
45CURLOPT_FILE
10001 CURLOPT_FILE
10001CURLOPT_FILETIME
69 CURLOPT_FILETIME
69CURLOPT_FOLLOWLOCATION
52 CURLOPT_FOLLOWLOCATION
52CURLOPT_FORBID_REUSE
75 CURLOPT_FORBID_REUSE
75CURLOPT_FRESH_CONNECT
74 CURLOPT_FRESH_CONNECT
74CURLOPT_FTPAPPEND
50 CURLOPT_FTPAPPEND
50CURLOPT_FTPLISTONLY
48 CURLOPT_FTPLISTONLY
48CURLOPT_FTPPORT
10017 CURLOPT_FTPPORT
10017CURLOPT_FTP_USE_EPRT
106 CURLOPT_FTP_USE_EPRT
106CURLOPT_FTP_USE_EPSV
85 CURLOPT_FTP_USE_EPSV
85CURLOPT_HEADER
42 CURLOPT_HEADER
42CURLOPT_HEADERFUNCTION
20079 CURLOPT_HEADERFUNCTION
20079CURLOPT_HTTP200ALIASES
10104 CURLOPT_HTTP200ALIASES
10104CURLOPT_HTTPGET
80 CURLOPT_HTTPGET
80CURLOPT_HTTPHEADER
10023 CURLOPT_HTTPHEADER
10023CURLOPT_HTTPPROXYTUNNEL
61 CURLOPT_HTTPPROXYTUNNEL
61CURLOPT_HTTP_VERSION
84 CURLOPT_HTTP_VERSION
84CURLOPT_INFILE
10009 CURLOPT_INFILE
10009CURLOPT_INFILESIZE
14 CURLOPT_INFILESIZE
14CURLOPT_INTERFACE
10062 CURLOPT_INTERFACE
10062CURLOPT_KRB4LEVEL
10063 CURLOPT_KRB4LEVEL
10063CURLOPT_LOW_SPEED_LIMIT
19 CURLOPT_LOW_SPEED_LIMIT
19CURLOPT_LOW_SPEED_TIME
20 CURLOPT_LOW_SPEED_TIME
20CURLOPT_MAXCONNECTS
71 CURLOPT_MAXCONNECTS
71CURLOPT_MAXREDIRS
68 CURLOPT_MAXREDIRS
68CURLOPT_NETRC
51 CURLOPT_NETRC
51CURLOPT_NOBODY
44 CURLOPT_NOBODY
44CURLOPT_NOPROGRESS
43 CURLOPT_NOPROGRESS
43CURLOPT_NOSIGNAL
99 CURLOPT_NOSIGNAL
99CURLOPT_PORT
3 CURLOPT_PORT
3CURLOPT_POST
47 CURLOPT_POST
47CURLOPT_POSTFIELDS
10015 CURLOPT_POSTFIELDS
10015CURLOPT_POSTQUOTE
10039 CURLOPT_POSTQUOTE
10039CURLOPT_PREQUOTE
10093 CURLOPT_PREQUOTE
10093CURLOPT_PRIVATE
10103 CURLOPT_PRIVATE
10103CURLOPT_PROGRESSFUNCTION
20056 CURLOPT_PROGRESSFUNCTION
20056CURLOPT_PROXY
10004 CURLOPT_PROXY
10004CURLOPT_PROXYPORT
59 CURLOPT_PROXYPORT
59CURLOPT_PROXYTYPE
101 CURLOPT_PROXYTYPE
101CURLOPT_PROXYUSERPWD
10006 CURLOPT_PROXYUSERPWD
10006CURLOPT_PUT
54 CURLOPT_PUT
54CURLOPT_QUOTE
10028 CURLOPT_QUOTE
10028CURLOPT_RANDOM_FILE
10076 CURLOPT_RANDOM_FILE
10076CURLOPT_RANGE
10007 CURLOPT_RANGE
10007CURLOPT_READDATA
10009 CURLOPT_READDATA
10009CURLOPT_READFUNCTION
20012 CURLOPT_READFUNCTION
20012CURLOPT_REFERER
10016 CURLOPT_REFERER
10016CURLOPT_RESUME_FROM
21 CURLOPT_RESUME_FROM
21CURLOPT_RETURNTRANSFER
19913 CURLOPT_RETURNTRANSFER
19913CURLOPT_SHARE
10100 CURLOPT_SHARE
10100CURLOPT_SSLCERT
10025 CURLOPT_SSLCERT
10025CURLOPT_SSLCERTPASSWD
10026 CURLOPT_SSLCERTPASSWD
10026CURLOPT_SSLCERTTYPE
10086 CURLOPT_SSLCERTTYPE
10086CURLOPT_SSLENGINE
10089 CURLOPT_SSLENGINE
10089CURLOPT_SSLENGINE_DEFAULT
90 CURLOPT_SSLENGINE_DEFAULT
90CURLOPT_SSLKEY
10087 CURLOPT_SSLKEY
10087CURLOPT_SSLKEYPASSWD
10026 CURLOPT_SSLKEYPASSWD
10026CURLOPT_SSLKEYTYPE
10088 CURLOPT_SSLKEYTYPE
10088CURLOPT_SSLVERSION
32 CURLOPT_SSLVERSION
32CURLOPT_SSL_CIPHER_LIST
10083 CURLOPT_SSL_CIPHER_LIST
10083CURLOPT_SSL_VERIFYHOST
81 CURLOPT_SSL_VERIFYHOST
81CURLOPT_SSL_VERIFYPEER
64 CURLOPT_SSL_VERIFYPEER
64CURLOPT_STDERR
10037 CURLOPT_STDERR
10037CURLOPT_TELNETOPTIONS
10070 CURLOPT_TELNETOPTIONS
10070CURLOPT_TIMECONDITION
33 CURLOPT_TIMECONDITION
33CURLOPT_TIMEOUT
13 CURLOPT_TIMEOUT
13CURLOPT_TIMEVALUE
34 CURLOPT_TIMEVALUE
34CURLOPT_TRANSFERTEXT
53 CURLOPT_TRANSFERTEXT
53CURLOPT_UNRESTRICTED_AUTH
105 CURLOPT_UNRESTRICTED_AUTH
105CURLOPT_UPLOAD
46 CURLOPT_UPLOAD
46CURLOPT_URL
10002 CURLOPT_URL
10002CURLOPT_USERAGENT
10018 CURLOPT_USERAGENT
10018CURLOPT_USERPWD
10005 CURLOPT_USERPWD
10005CURLOPT_VERBOSE
41 CURLOPT_VERBOSE
41CURLOPT_WRITEFUNCTION
20011 CURLOPT_WRITEFUNCTION
20011CURLOPT_WRITEHEADER
10029 CURLOPT_WRITEHEADER
10029CURLOPT_HTTPAUTH
107 CURLOPT_HTTPAUTH
107CURLOPT_FTP_CREATE_MISSING_DIRS
110 CURLOPT_FTP_CREATE_MISSING_DIRS
110CURLOPT_PROXYAUTH
111 CURLOPT_PROXYAUTH
111 章CURLOPT_FTP_RESPONSE_TIMEOUT
112 CURLOPT_FTP_RESPONSE_TIMEOUT
112CURLOPT_IPRESOLVE
113 CURLOPT_IPRESOLVE
113 章CURLOPT_MAXFILESIZE
114 CURLOPT_MAXFILESIZE
114CURLOPT_FTP_SSL
119 CURLOPT_FTP_SSL
119CURLOPT_NETRC_FILE
10118 CURLOPT_NETRC_FILE
10118CURLOPT_FTPSSLAUTH
129 CURLOPT_FTPSSLAUTH
129 章CURLOPT_FTP_ACCOUNT
10134 CURLOPT_FTP_ACCOUNT
10134CURLOPT_TCP_NODELAY
121 CURLOPT_TCP_NODELAY
121CURLOPT_COOKIELIST
10135 CURLOPT_COOKIELIST
10135CURLOPT_IGNORE_CONTENT_LENGTH
136 CURLOPT_IGNORE_CONTENT_LENGTH
136CURLOPT_FTP_SKIP_PASV_IP
137 CURLOPT_FTP_SKIP_PASV_IP
137CURLOPT_FTP_FILEMETHOD
138 CURLOPT_FTP_FILEMETHOD
138 章CURLOPT_CONNECT_ONLY
141 CURLOPT_CONNECT_ONLY
141 章CURLOPT_LOCALPORT
139 CURLOPT_LOCALPORT
139 章CURLOPT_LOCALPORTRANGE
140 CURLOPT_LOCALPORTRANGE
140CURLOPT_FTP_ALTERNATIVE_TO_USER
10147 CURLOPT_FTP_ALTERNATIVE_TO_USER
10147CURLOPT_MAX_RECV_SPEED_LARGE
30146 CURLOPT_MAX_RECV_SPEED_LARGE
30146CURLOPT_MAX_SEND_SPEED_LARGE
30145 CURLOPT_MAX_SEND_SPEED_LARGE
30145CURLOPT_SSL_SESSIONID_CACHE
150 CURLOPT_SSL_SESSIONID_CACHE
150CURLOPT_FTP_SSL_CCC
154 CURLOPT_FTP_SSL_CCC
154CURLOPT_SSH_AUTH_TYPES
151 CURLOPT_SSH_AUTH_TYPES
151CURLOPT_SSH_PRIVATE_KEYFILE
10153 CURLOPT_SSH_PRIVATE_KEYFILE
10153CURLOPT_SSH_PUBLIC_KEYFILE
10152 CURLOPT_SSH_PUBLIC_KEYFILE
10152CURLOPT_CONNECTTIMEOUT_MS
156 CURLOPT_CONNECTTIMEOUT_MS
156CURLOPT_HTTP_CONTENT_DECODING
158 CURLOPT_HTTP_CONTENT_DECODING
158CURLOPT_HTTP_TRANSFER_DECODING
157 CURLOPT_HTTP_TRANSFER_DECODING
157 章CURLOPT_TIMEOUT_MS
155 CURLOPT_TIMEOUT_MS
155CURLOPT_KRBLEVEL
10063 CURLOPT_KRBLEVEL
10063CURLOPT_NEW_DIRECTORY_PERMS
160 CURLOPT_NEW_DIRECTORY_PERMS
160CURLOPT_NEW_FILE_PERMS
159 CURLOPT_NEW_FILE_PERMS
159 章CURLOPT_APPEND
50 CURLOPT_APPEND
50CURLOPT_DIRLISTONLY
48 CURLOPT_DIRLISTONLY
48CURLOPT_USE_SSL
119 CURLOPT_USE_SSL
119CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
10162 CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
10162CURLOPT_PROXY_TRANSFER_MODE
166 CURLOPT_PROXY_TRANSFER_MODE
166CURLOPT_ADDRESS_SCOPE
171 CURLOPT_ADDRESS_SCOPE
171 章CURLOPT_CRLFILE
10169 CURLOPT_CRLFILE
10169CURLOPT_ISSUERCERT
10170 CURLOPT_ISSUERCERT
10170CURLOPT_KEYPASSWD
10026 CURLOPT_KEYPASSWD
10026CURLOPT_CERTINFO
172 CURLOPT_CERTINFO
172 章CURLOPT_PASSWORD
10174 CURLOPT_PASSWORD
10174CURLOPT_POSTREDIR
161 CURLOPT_POSTREDIR
161 章CURLOPT_PROXYPASSWORD
10176 CURLOPT_PROXYPASSWORD
10176CURLOPT_PROXYUSERNAME
10175 CURLOPT_PROXYUSERNAME
10175CURLOPT_USERNAME
10173 CURLOPT_USERNAME
10173CURLOPT_NOPROXY
10177 CURLOPT_NOPROXY
10177CURLOPT_PROTOCOLS
181 CURLOPT_PROTOCOLS
181 章CURLOPT_REDIR_PROTOCOLS
182 CURLOPT_REDIR_PROTOCOLS
182 章CURLOPT_SOCKS5_GSSAPI_NEC
180 CURLOPT_SOCKS5_GSSAPI_NEC
180CURLOPT_SOCKS5_GSSAPI_SERVICE
10179 CURLOPT_SOCKS5_GSSAPI_SERVICE
10179CURLOPT_TFTP_BLKSIZE
178 CURLOPT_TFTP_BLKSIZE
178CURLOPT_SSH_KNOWNHOSTS
10183 CURLOPT_SSH_KNOWNHOSTS
10183CURLOPT_FTP_USE_PRET
188 CURLOPT_FTP_USE_PRET
188 章CURLOPT_MAIL_FROM
10186 CURLOPT_MAIL_FROM
10186CURLOPT_MAIL_RCPT
10187 CURLOPT_MAIL_RCPT
10187CURLOPT_RTSP_CLIENT_CSEQ
193 CURLOPT_RTSP_CLIENT_CSEQ
193CURLOPT_RTSP_REQUEST
189 CURLOPT_RTSP_REQUEST
189CURLOPT_RTSP_SERVER_CSEQ
194 CURLOPT_RTSP_SERVER_CSEQ
194CURLOPT_RTSP_SESSION_ID
10190 CURLOPT_RTSP_SESSION_ID
10190CURLOPT_RTSP_STREAM_URI
10191 CURLOPT_RTSP_STREAM_URI
10191CURLOPT_RTSP_TRANSPORT
10192 CURLOPT_RTSP_TRANSPORT
10192CURLOPT_FNMATCH_FUNCTION
20200 CURLOPT_FNMATCH_FUNCTION
20200CURLOPT_WILDCARDMATCH
197 CURLOPT_WILDCARDMATCH
197 章CURLOPT_RESOLVE
10203 CURLOPT_RESOLVE
10203CURLOPT_TLSAUTH_PASSWORD
10205 CURLOPT_TLSAUTH_PASSWORD
10205CURLOPT_TLSAUTH_TYPE
10206 CURLOPT_TLSAUTH_TYPE
10206CURLOPT_TLSAUTH_USERNAME
10204 CURLOPT_TLSAUTH_USERNAME
10204CURLOPT_ACCEPT_ENCODING
10102 CURLOPT_ACCEPT_ENCODING
10102CURLOPT_TRANSFER_ENCODING
207 CURLOPT_TRANSFER_ENCODING
207 章CURLOPT_GSSAPI_DELEGATION
210 CURLOPT_GSSAPI_DELEGATION
210CURLOPT_ACCEPTTIMEOUT_MS
212 CURLOPT_ACCEPTTIMEOUT_MS
212CURLOPT_DNS_SERVERS
10211 CURLOPT_DNS_SERVERS
10211CURLOPT_MAIL_AUTH
10217 CURLOPT_MAIL_AUTH
10217CURLOPT_SSL_OPTIONS
216 CURLOPT_SSL_OPTIONS
216 章CURLOPT_TCP_KEEPALIVE
213 CURLOPT_TCP_KEEPALIVE
213CURLOPT_TCP_KEEPIDLE
214 CURLOPT_TCP_KEEPIDLE
214CURLOPT_TCP_KEEPINTVL
215 CURLOPT_TCP_KEEPINTVL
215CURLOPT_SAFE_UPLOAD
-1 CURLOPT_SAFE_UPLOAD
-1在这里我们可以找到所有默认值: https : //curl.haxx.se/libcurl/c/curl_easy_setopt.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.