简体   繁体   English

默认 cURL 选项值

[英]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 58
  • CURLOPT_BINARYTRANSFER 19914 CURLOPT_BINARYTRANSFER 19914
  • CURLOPT_BUFFERSIZE 98 CURLOPT_BUFFERSIZE 98
  • CURLOPT_CAINFO 10065 CURLOPT_CAINFO 10065
  • CURLOPT_CAPATH 10097 CURLOPT_CAPATH 10097
  • CURLOPT_CONNECTTIMEOUT 78 CURLOPT_CONNECTTIMEOUT 78
  • CURLOPT_COOKIE 10022 CURLOPT_COOKIE 10022
  • CURLOPT_COOKIEFILE 10031 CURLOPT_COOKIEFILE 10031
  • CURLOPT_COOKIEJAR 10082 CURLOPT_COOKIEJAR 10082
  • CURLOPT_COOKIESESSION 96 CURLOPT_COOKIESESSION 96
  • CURLOPT_CRLF 27 CURLOPT_CRLF 27
  • CURLOPT_CUSTOMREQUEST 10036 CURLOPT_CUSTOMREQUEST 10036
  • CURLOPT_DNS_CACHE_TIMEOUT 92 CURLOPT_DNS_CACHE_TIMEOUT 92
  • CURLOPT_DNS_USE_GLOBAL_CACHE 91 CURLOPT_DNS_USE_GLOBAL_CACHE 91
  • CURLOPT_EGDSOCKET 10077 CURLOPT_EGDSOCKET 10077
  • CURLOPT_ENCODING 10102 CURLOPT_ENCODING 10102
  • CURLOPT_FAILONERROR 45 CURLOPT_FAILONERROR 45
  • CURLOPT_FILE 10001 CURLOPT_FILE 10001
  • CURLOPT_FILETIME 69 CURLOPT_FILETIME 69
  • CURLOPT_FOLLOWLOCATION 52 CURLOPT_FOLLOWLOCATION 52
  • CURLOPT_FORBID_REUSE 75 CURLOPT_FORBID_REUSE 75
  • CURLOPT_FRESH_CONNECT 74 CURLOPT_FRESH_CONNECT 74
  • CURLOPT_FTPAPPEND 50 CURLOPT_FTPAPPEND 50
  • CURLOPT_FTPLISTONLY 48 CURLOPT_FTPLISTONLY 48
  • CURLOPT_FTPPORT 10017 CURLOPT_FTPPORT 10017
  • CURLOPT_FTP_USE_EPRT 106 CURLOPT_FTP_USE_EPRT 106
  • CURLOPT_FTP_USE_EPSV 85 CURLOPT_FTP_USE_EPSV 85
  • CURLOPT_HEADER 42 CURLOPT_HEADER 42
  • CURLOPT_HEADERFUNCTION 20079 CURLOPT_HEADERFUNCTION 20079
  • CURLOPT_HTTP200ALIASES 10104 CURLOPT_HTTP200ALIASES 10104
  • CURLOPT_HTTPGET 80 CURLOPT_HTTPGET 80
  • CURLOPT_HTTPHEADER 10023 CURLOPT_HTTPHEADER 10023
  • CURLOPT_HTTPPROXYTUNNEL 61 CURLOPT_HTTPPROXYTUNNEL 61
  • CURLOPT_HTTP_VERSION 84 CURLOPT_HTTP_VERSION 84
  • CURLOPT_INFILE 10009 CURLOPT_INFILE 10009
  • CURLOPT_INFILESIZE 14 CURLOPT_INFILESIZE 14
  • CURLOPT_INTERFACE 10062 CURLOPT_INTERFACE 10062
  • CURLOPT_KRB4LEVEL 10063 CURLOPT_KRB4LEVEL 10063
  • CURLOPT_LOW_SPEED_LIMIT 19 CURLOPT_LOW_SPEED_LIMIT 19
  • CURLOPT_LOW_SPEED_TIME 20 CURLOPT_LOW_SPEED_TIME 20
  • CURLOPT_MAXCONNECTS 71 CURLOPT_MAXCONNECTS 71
  • CURLOPT_MAXREDIRS 68 CURLOPT_MAXREDIRS 68
  • CURLOPT_NETRC 51 CURLOPT_NETRC 51
  • CURLOPT_NOBODY 44 CURLOPT_NOBODY 44
  • CURLOPT_NOPROGRESS 43 CURLOPT_NOPROGRESS 43
  • CURLOPT_NOSIGNAL 99 CURLOPT_NOSIGNAL 99
  • CURLOPT_PORT 3 CURLOPT_PORT 3
  • CURLOPT_POST 47 CURLOPT_POST 47
  • CURLOPT_POSTFIELDS 10015 CURLOPT_POSTFIELDS 10015
  • CURLOPT_POSTQUOTE 10039 CURLOPT_POSTQUOTE 10039
  • CURLOPT_PREQUOTE 10093 CURLOPT_PREQUOTE 10093
  • CURLOPT_PRIVATE 10103 CURLOPT_PRIVATE 10103
  • CURLOPT_PROGRESSFUNCTION 20056 CURLOPT_PROGRESSFUNCTION 20056
  • CURLOPT_PROXY 10004 CURLOPT_PROXY 10004
  • CURLOPT_PROXYPORT 59 CURLOPT_PROXYPORT 59
  • CURLOPT_PROXYTYPE 101 CURLOPT_PROXYTYPE 101
  • CURLOPT_PROXYUSERPWD 10006 CURLOPT_PROXYUSERPWD 10006
  • CURLOPT_PUT 54 CURLOPT_PUT 54
  • CURLOPT_QUOTE 10028 CURLOPT_QUOTE 10028
  • CURLOPT_RANDOM_FILE 10076 CURLOPT_RANDOM_FILE 10076
  • CURLOPT_RANGE 10007 CURLOPT_RANGE 10007
  • CURLOPT_READDATA 10009 CURLOPT_READDATA 10009
  • CURLOPT_READFUNCTION 20012 CURLOPT_READFUNCTION 20012
  • CURLOPT_REFERER 10016 CURLOPT_REFERER 10016
  • CURLOPT_RESUME_FROM 21 CURLOPT_RESUME_FROM 21
  • CURLOPT_RETURNTRANSFER 19913 CURLOPT_RETURNTRANSFER 19913
  • CURLOPT_SHARE 10100 CURLOPT_SHARE 10100
  • CURLOPT_SSLCERT 10025 CURLOPT_SSLCERT 10025
  • CURLOPT_SSLCERTPASSWD 10026 CURLOPT_SSLCERTPASSWD 10026
  • CURLOPT_SSLCERTTYPE 10086 CURLOPT_SSLCERTTYPE 10086
  • CURLOPT_SSLENGINE 10089 CURLOPT_SSLENGINE 10089
  • CURLOPT_SSLENGINE_DEFAULT 90 CURLOPT_SSLENGINE_DEFAULT 90
  • CURLOPT_SSLKEY 10087 CURLOPT_SSLKEY 10087
  • CURLOPT_SSLKEYPASSWD 10026 CURLOPT_SSLKEYPASSWD 10026
  • CURLOPT_SSLKEYTYPE 10088 CURLOPT_SSLKEYTYPE 10088
  • CURLOPT_SSLVERSION 32 CURLOPT_SSLVERSION 32
  • CURLOPT_SSL_CIPHER_LIST 10083 CURLOPT_SSL_CIPHER_LIST 10083
  • CURLOPT_SSL_VERIFYHOST 81 CURLOPT_SSL_VERIFYHOST 81
  • CURLOPT_SSL_VERIFYPEER 64 CURLOPT_SSL_VERIFYPEER 64
  • CURLOPT_STDERR 10037 CURLOPT_STDERR 10037
  • CURLOPT_TELNETOPTIONS 10070 CURLOPT_TELNETOPTIONS 10070
  • CURLOPT_TIMECONDITION 33 CURLOPT_TIMECONDITION 33
  • CURLOPT_TIMEOUT 13 CURLOPT_TIMEOUT 13
  • CURLOPT_TIMEVALUE 34 CURLOPT_TIMEVALUE 34
  • CURLOPT_TRANSFERTEXT 53 CURLOPT_TRANSFERTEXT 53
  • CURLOPT_UNRESTRICTED_AUTH 105 CURLOPT_UNRESTRICTED_AUTH 105
  • CURLOPT_UPLOAD 46 CURLOPT_UPLOAD 46
  • CURLOPT_URL 10002 CURLOPT_URL 10002
  • CURLOPT_USERAGENT 10018 CURLOPT_USERAGENT 10018
  • CURLOPT_USERPWD 10005 CURLOPT_USERPWD 10005
  • CURLOPT_VERBOSE 41 CURLOPT_VERBOSE 41
  • CURLOPT_WRITEFUNCTION 20011 CURLOPT_WRITEFUNCTION 20011
  • CURLOPT_WRITEHEADER 10029 CURLOPT_WRITEHEADER 10029
  • CURLOPT_HTTPAUTH 107 CURLOPT_HTTPAUTH 107
  • CURLOPT_FTP_CREATE_MISSING_DIRS 110 CURLOPT_FTP_CREATE_MISSING_DIRS 110
  • CURLOPT_PROXYAUTH 111 CURLOPT_PROXYAUTH 111 章
  • CURLOPT_FTP_RESPONSE_TIMEOUT 112 CURLOPT_FTP_RESPONSE_TIMEOUT 112
  • CURLOPT_IPRESOLVE 113 CURLOPT_IPRESOLVE 113 章
  • CURLOPT_MAXFILESIZE 114 CURLOPT_MAXFILESIZE 114
  • CURLOPT_FTP_SSL 119 CURLOPT_FTP_SSL 119
  • CURLOPT_NETRC_FILE 10118 CURLOPT_NETRC_FILE 10118
  • CURLOPT_FTPSSLAUTH 129 CURLOPT_FTPSSLAUTH 129 章
  • CURLOPT_FTP_ACCOUNT 10134 CURLOPT_FTP_ACCOUNT 10134
  • CURLOPT_TCP_NODELAY 121 CURLOPT_TCP_NODELAY 121
  • CURLOPT_COOKIELIST 10135 CURLOPT_COOKIELIST 10135
  • CURLOPT_IGNORE_CONTENT_LENGTH 136 CURLOPT_IGNORE_CONTENT_LENGTH 136
  • CURLOPT_FTP_SKIP_PASV_IP 137 CURLOPT_FTP_SKIP_PASV_IP 137
  • CURLOPT_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 140
  • CURLOPT_FTP_ALTERNATIVE_TO_USER 10147 CURLOPT_FTP_ALTERNATIVE_TO_USER 10147
  • CURLOPT_MAX_RECV_SPEED_LARGE 30146 CURLOPT_MAX_RECV_SPEED_LARGE 30146
  • CURLOPT_MAX_SEND_SPEED_LARGE 30145 CURLOPT_MAX_SEND_SPEED_LARGE 30145
  • CURLOPT_SSL_SESSIONID_CACHE 150 CURLOPT_SSL_SESSIONID_CACHE 150
  • CURLOPT_FTP_SSL_CCC 154 CURLOPT_FTP_SSL_CCC 154
  • CURLOPT_SSH_AUTH_TYPES 151 CURLOPT_SSH_AUTH_TYPES 151
  • CURLOPT_SSH_PRIVATE_KEYFILE 10153 CURLOPT_SSH_PRIVATE_KEYFILE 10153
  • CURLOPT_SSH_PUBLIC_KEYFILE 10152 CURLOPT_SSH_PUBLIC_KEYFILE 10152
  • CURLOPT_CONNECTTIMEOUT_MS 156 CURLOPT_CONNECTTIMEOUT_MS 156
  • CURLOPT_HTTP_CONTENT_DECODING 158 CURLOPT_HTTP_CONTENT_DECODING 158
  • CURLOPT_HTTP_TRANSFER_DECODING 157 CURLOPT_HTTP_TRANSFER_DECODING 157 章
  • CURLOPT_TIMEOUT_MS 155 CURLOPT_TIMEOUT_MS 155
  • CURLOPT_KRBLEVEL 10063 CURLOPT_KRBLEVEL 10063
  • CURLOPT_NEW_DIRECTORY_PERMS 160 CURLOPT_NEW_DIRECTORY_PERMS 160
  • CURLOPT_NEW_FILE_PERMS 159 CURLOPT_NEW_FILE_PERMS 159 章
  • CURLOPT_APPEND 50 CURLOPT_APPEND 50
  • CURLOPT_DIRLISTONLY 48 CURLOPT_DIRLISTONLY 48
  • CURLOPT_USE_SSL 119 CURLOPT_USE_SSL 119
  • CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 10162 CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 10162
  • CURLOPT_PROXY_TRANSFER_MODE 166 CURLOPT_PROXY_TRANSFER_MODE 166
  • CURLOPT_ADDRESS_SCOPE 171 CURLOPT_ADDRESS_SCOPE 171 章
  • CURLOPT_CRLFILE 10169 CURLOPT_CRLFILE 10169
  • CURLOPT_ISSUERCERT 10170 CURLOPT_ISSUERCERT 10170
  • CURLOPT_KEYPASSWD 10026 CURLOPT_KEYPASSWD 10026
  • CURLOPT_CERTINFO 172 CURLOPT_CERTINFO 172 章
  • CURLOPT_PASSWORD 10174 CURLOPT_PASSWORD 10174
  • CURLOPT_POSTREDIR 161 CURLOPT_POSTREDIR 161 章
  • CURLOPT_PROXYPASSWORD 10176 CURLOPT_PROXYPASSWORD 10176
  • CURLOPT_PROXYUSERNAME 10175 CURLOPT_PROXYUSERNAME 10175
  • CURLOPT_USERNAME 10173 CURLOPT_USERNAME 10173
  • CURLOPT_NOPROXY 10177 CURLOPT_NOPROXY 10177
  • CURLOPT_PROTOCOLS 181 CURLOPT_PROTOCOLS 181 章
  • CURLOPT_REDIR_PROTOCOLS 182 CURLOPT_REDIR_PROTOCOLS 182 章
  • CURLOPT_SOCKS5_GSSAPI_NEC 180 CURLOPT_SOCKS5_GSSAPI_NEC 180
  • CURLOPT_SOCKS5_GSSAPI_SERVICE 10179 CURLOPT_SOCKS5_GSSAPI_SERVICE 10179
  • CURLOPT_TFTP_BLKSIZE 178 CURLOPT_TFTP_BLKSIZE 178
  • CURLOPT_SSH_KNOWNHOSTS 10183 CURLOPT_SSH_KNOWNHOSTS 10183
  • CURLOPT_FTP_USE_PRET 188 CURLOPT_FTP_USE_PRET 188 章
  • CURLOPT_MAIL_FROM 10186 CURLOPT_MAIL_FROM 10186
  • CURLOPT_MAIL_RCPT 10187 CURLOPT_MAIL_RCPT 10187
  • CURLOPT_RTSP_CLIENT_CSEQ 193 CURLOPT_RTSP_CLIENT_CSEQ 193
  • CURLOPT_RTSP_REQUEST 189 CURLOPT_RTSP_REQUEST 189
  • CURLOPT_RTSP_SERVER_CSEQ 194 CURLOPT_RTSP_SERVER_CSEQ 194
  • CURLOPT_RTSP_SESSION_ID 10190 CURLOPT_RTSP_SESSION_ID 10190
  • CURLOPT_RTSP_STREAM_URI 10191 CURLOPT_RTSP_STREAM_URI 10191
  • CURLOPT_RTSP_TRANSPORT 10192 CURLOPT_RTSP_TRANSPORT 10192
  • CURLOPT_FNMATCH_FUNCTION 20200 CURLOPT_FNMATCH_FUNCTION 20200
  • CURLOPT_WILDCARDMATCH 197 CURLOPT_WILDCARDMATCH 197 章
  • CURLOPT_RESOLVE 10203 CURLOPT_RESOLVE 10203
  • CURLOPT_TLSAUTH_PASSWORD 10205 CURLOPT_TLSAUTH_PASSWORD 10205
  • CURLOPT_TLSAUTH_TYPE 10206 CURLOPT_TLSAUTH_TYPE 10206
  • CURLOPT_TLSAUTH_USERNAME 10204 CURLOPT_TLSAUTH_USERNAME 10204
  • CURLOPT_ACCEPT_ENCODING 10102 CURLOPT_ACCEPT_ENCODING 10102
  • CURLOPT_TRANSFER_ENCODING 207 CURLOPT_TRANSFER_ENCODING 207 章
  • CURLOPT_GSSAPI_DELEGATION 210 CURLOPT_GSSAPI_DELEGATION 210
  • CURLOPT_ACCEPTTIMEOUT_MS 212 CURLOPT_ACCEPTTIMEOUT_MS 212
  • CURLOPT_DNS_SERVERS 10211 CURLOPT_DNS_SERVERS 10211
  • CURLOPT_MAIL_AUTH 10217 CURLOPT_MAIL_AUTH 10217
  • CURLOPT_SSL_OPTIONS 216 CURLOPT_SSL_OPTIONS 216 章
  • CURLOPT_TCP_KEEPALIVE 213 CURLOPT_TCP_KEEPALIVE 213
  • CURLOPT_TCP_KEEPIDLE 214 CURLOPT_TCP_KEEPIDLE 214
  • CURLOPT_TCP_KEEPINTVL 215 CURLOPT_TCP_KEEPINTVL 215
  • CURLOPT_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM