我今天正在重构我的cURL课程并考虑查看cURL FLAGS的默认值。
谁能告诉我在哪里可以找到它或者我怎么能输出它们?
PS:如果可能的话。
答案 0 :(得分:15)
我今天一直在研究同样的问题并遇到了这个(相当古老的)帖子。由于它几乎显示在谷歌的顶端,我认为这是结束我的研究的地方。
简而言之:这是不可能的。
似乎大多数cURL选项甚至没有任何默认值。 For example,timeouts。 Or the user agent。但许多其他人确实有默认值,如PHP manual州。我找不到任何默认值列表 - 既不用于PHP的cURL扩展,也不用于cURL。只有在上述PHP手册中或cURL API doc内提到的个别默认值。但是,我怀疑这些页面中是否提到了每个默认值。
不幸的是,以编程方式找出它们也是不可能的。我们的想法是在设置第一个选项之前找出所有选项值。但是there is no curl_getopt()
。甚至没有在cURL本身。模拟curl_getopt()
的所有解决方案只能检索已手动设置的选项。
在(非常)短暂浏览cURL源代码(原始C lib)后,我也怀疑有时没有真正的默认值,但是如果没有设置选项,一些逻辑会计算出使用哪个值。在这种情况下,默认值甚至不能很好地定义。
最后,很可能PHP的cURL扩展使用了一些不同于cURL的默认值。
因此,除非一些cURL开发人员对此有所了解 - 或者至少有时间和技能真正深入研究代码的人 - 我们几乎都坚持这一点。
答案 1 :(得分:3)
虽然curl_setopt()
的PHP文档列举了可用选项列表,但它没有*显示PHP为每个连接设置的默认值(默认情况下,直到你覆盖它们为止)。
您可以在调用_php_curl_set_default_options(php_curl *ch)
时在ext/curl/interface.c文件中查看PHP为curl设置的默认选项。
目前,默认选项+值为:
// "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 doc 确实提到它设置了CURLOPT_NOPROGRESS
的默认值:
PHP自动将此选项设置为 TRUE ,只应更改此选项以进行调试。
如果您对curl的常规默认行为感到好奇,可以在curl_easy_setopt()
和curl_setopt()
的文档中查看各个选项。前者给出了每个的非常详细的描述,后者是一个总结。两者都列出了curl的默认行为,没有设置选项。
答案 2 :(得分:0)
这将显示“CURL *”常量名称及其值:
foreach (get_defined_constants() as $name => $val) {
if (strpos($name, 'CURL') === 0) {
echo $name . ' => ' . $val . "\n";
}
}
对于curl选项值,当然要将'CURL'更改为'CURLOPT_'。
(如果您考虑在脚本中使用整数值而不是常量名称,则不应该这样做。)
答案 3 :(得分:-2)
获取您要编辑的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