Значения опций по умолчанию cURL
Я обновлял свой класс cURL сегодня и думал о том, чтобы посмотреть значения по умолчанию для cURL FLAGS.
Может ли кто-нибудь сказать мне, где я могу найти или как я могу их вывести?
PS: Если это вообще возможно.
Ответы
Ответ 1
Сегодня я изучал ту же проблему и столкнулся с этой (довольно старой) почтой. Поскольку это проявляется в значительной степени на вершине Google, я думал, что это место, чтобы завершить мои исследования.
Короче: это невозможно.
Похоже, что большинство параметров cURL даже не имеют значений по умолчанию. Например, таймауты. Или пользовательский агент. Но у многих других есть дефолты, как говорится в руководстве PHP. Я не смог найти список значений по умолчанию - ни для расширения PHP cURL, ни для cURL вообще. Только отдельные значения по умолчанию, упомянутые в этом руководстве PHP, или в cURL API doc. Тем не менее, я сомневаюсь, что на всех этих страницах упоминается каждый по умолчанию.
К сожалению, поиск их программно также невозможен. Идея состояла бы в том, чтобы узнать все значения параметров перед установкой первого. Но нет curl_getopt()
. Даже в самой CURL. Все решения, которые эмулируют curl_getopt()
, могут извлекать только те параметры, которые были установлены вручную.
После (очень) короткого взгляда на исходный код cURL (исходный C lib) я также подозреваю, что иногда нет реальных значений по умолчанию, но если опция не установлена, какая-то логика переходит к выяснению, какое значение использовать, В этом случае значения по умолчанию даже не будут корректно определены.
Наконец, есть вероятность, что расширение PHP cURL использует несколько разных значений по умолчанию, чем сам cURL.
Поэтому, если какой-либо разработчик cURL не проливает свет на это - или, по крайней мере, тот, у кого есть время и навыки, чтобы действительно погрузиться в код - мы в значительной степени застряли на этом.
Ответ 2
В то время как PHP Docs для curl_setopt()
перечисляет список доступных параметров, он не показывает * значения по умолчанию, которые устанавливает PHP для каждое соединение (по умолчанию, пока вы их не перезапишете).
Вы можете просмотреть эти параметры по умолчанию. Наборы PHP для curl в файле ext/curl/interface.c в вызове _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 doc упоминается, что он устанавливает значение по умолчанию для CURLOPT_NOPROGRESS
:
PHP автоматически устанавливает эту опцию в TRUE, ее следует изменять только для целей отладки.
Если вам интересно узнать об общем поведении зависания по умолчанию, вы можете просмотреть отдельные параметры в документации для curl_easy_setopt()
и curl_setopt()
. Первый дает очень подробное описание каждого, последнее - общее резюме. Оба перечисляют поведение зависания по умолчанию без установки параметров.
Ответ 3
Здесь будут отображаться имена констант CURL * и их значения:
foreach (get_defined_constants() as $name => $val) {
if (strpos($name, 'CURL') === 0) {
echo $name . ' => ' . $val . "\n";
}
}
Только для значений параметра curl, конечно, измените 'CURL' на 'CURLOPT_'.
(Если вы думаете об использовании целочисленных значений вместо имен констант в script, вы не должны.)
Ответ 4
Код для получения параметров конфигурации CURLOPT
, которые вы хотите изменить:
foreach (get_defined_constants() as $key => $val) {
if (strpos($key, 'CURLOPT_') === 0) {
echo $key . ' => ' . $val . "\n";
}
}
Ниже приведены настройки PHP CURL по умолчанию при установке PHP 5.6.30 на CentOS 7:
-
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