默认cURL选项值

时间:2010-10-07 09:15:14

标签: php curl default

我今天正在重构我的cURL课程并考虑查看cURL FLAGS的默认值。
谁能告诉我在哪里可以找到它或者我怎么能输出它们?

PS:如果可能的话。

4 个答案:

答案 0 :(得分:15)

我今天一直在研究同样的问题并遇到了这个(相当古老的)帖子。由于它几乎显示在谷歌的顶端,我认为这是结束我的研究的地方。

简而言之:这是不可能的。

似乎大多数cURL选项甚至没有任何默认值。 For exampletimeoutsOr 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