繁体   English   中英

默认 cURL 选项值

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