[英]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.