Сегодня я рефакторил свой класс cURL и подумал о том, чтобы посмотреть на значения по умолчанию cURL FLAGS.
Может ли кто-нибудь сказать мне, где я могу найти или как я могу их вывести?
PS: Если это вообще возможно.
Сегодня я рефакторил свой класс cURL и подумал о том, чтобы посмотреть на значения по умолчанию cURL FLAGS.
Может ли кто-нибудь сказать мне, где я могу найти или как я могу их вывести?
PS: Если это вообще возможно.
Сегодня я исследовал ту же проблему и наткнулся на этот (довольно старый) пост. Поскольку он находится в верхней части Google, я подумал, что это место для завершения моего исследования.
Короче: это невозможно.
Похоже, что большинство параметров cURL даже не имеют значений по умолчанию. Например, тайм-ауты. Или пользовательский агент. Но многие другие имеют значения по умолчанию, как указано в руководстве по PHP. Я не смог найти никакого списка значений по умолчанию — ни для расширения PHP cURL, ни для cURL вообще. Только отдельные значения по умолчанию, упомянутые в указанном руководстве по PHP или в документе по cURL API. Однако я сомневаюсь, что на этих страницах упоминается каждое значение по умолчанию.
К сожалению, узнать их программно также невозможно. Идея заключалась бы в том, чтобы узнать значения всех параметров перед установкой первого. Но нет curl_getopt(). Даже в самом cURL. Все решения, эмулирующие curl_getopt(), могут извлекать только те параметры, которые были установлены вручную.
После (очень) краткого взгляда на исходный код cURL (исходная библиотека C) я также подозреваю, что иногда нет реальных значений по умолчанию, но если параметр не установлен, некоторая логика помогает выяснить, какое значение использовать. В этом случае значения по умолчанию даже не будут четко определены.
Наконец, есть вероятность, что расширение PHP cURL использует некоторые значения по умолчанию, отличные от самого cURL.
Так что, если какой-нибудь разработчик cURL не прольет свет на это — или, по крайней мере, кто-то, у кого есть время и навыки, чтобы действительно погрузиться в код — мы в значительной степени застряли на этом.
Хотя документация по PHP для 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 упоминается, что он устанавливает значение по умолчанию для CURLOPT_NOPROGRESS:
PHP автоматически устанавливает для этого параметра значение TRUE, его следует изменять только в целях отладки.
Если вас интересует общее поведение curl по умолчанию, вы можете просмотреть отдельные параметры в документации для curl_easy_setopt() и curl_setopt(). Первый дает очень подробное описание каждого, второй — общее резюме. Оба перечисляют поведение curl по умолчанию без установленных опций.
CURLOPT_TCP_NODELAY по умолчанию, как в curl
- person mente; 13.07.2017
Это отобразит имена констант «CURL*» и их значения:
foreach (get_defined_constants() as $name => $val) {
if (strpos($name, 'CURL') === 0) {
echo $name . ' => ' . $val . "\n";
}
}
Конечно, только для значений параметров завитка измените «CURL» на «CURLOPT_».
(Если вы думаете об использовании целочисленных значений вместо имен констант в вашем скрипте, вам не следует этого делать.)
CURLOPT_HEADER => 42? Разве значение не должно быть 1 или 0 (истина/ложь)?
- person Eugene; 07.10.2010
Код для получения параметров конфигурации 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 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 111CURLOPT_FTP_RESPONSE_TIMEOUT 112CURLOPT_IPRESOLVE 113CURLOPT_MAXFILESIZE 114CURLOPT_FTP_SSL 119CURLOPT_NETRC_FILE 10118CURLOPT_FTPSSLAUTH 129CURLOPT_FTP_ACCOUNT 10134CURLOPT_TCP_NODELAY 121CURLOPT_COOKIELIST 10135CURLOPT_IGNORE_CONTENT_LENGTH 136CURLOPT_FTP_SKIP_PASV_IP 137CURLOPT_FTP_FILEMETHOD 138CURLOPT_CONNECT_ONLY 141CURLOPT_LOCALPORT 139CURLOPT_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 157CURLOPT_TIMEOUT_MS 155CURLOPT_KRBLEVEL 10063CURLOPT_NEW_DIRECTORY_PERMS 160CURLOPT_NEW_FILE_PERMS 159CURLOPT_APPEND 50CURLOPT_DIRLISTONLY 48CURLOPT_USE_SSL 119CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 10162CURLOPT_PROXY_TRANSFER_MODE 166CURLOPT_ADDRESS_SCOPE 171CURLOPT_CRLFILE 10169CURLOPT_ISSUERCERT 10170CURLOPT_KEYPASSWD 10026CURLOPT_CERTINFO 172CURLOPT_PASSWORD 10174CURLOPT_POSTREDIR 161CURLOPT_PROXYPASSWORD 10176CURLOPT_PROXYUSERNAME 10175CURLOPT_USERNAME 10173CURLOPT_NOPROXY 10177CURLOPT_PROTOCOLS 181CURLOPT_REDIR_PROTOCOLS 182CURLOPT_SOCKS5_GSSAPI_NEC 180CURLOPT_SOCKS5_GSSAPI_SERVICE 10179CURLOPT_TFTP_BLKSIZE 178CURLOPT_SSH_KNOWNHOSTS 10183CURLOPT_FTP_USE_PRET 188CURLOPT_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 197CURLOPT_RESOLVE 10203CURLOPT_TLSAUTH_PASSWORD 10205CURLOPT_TLSAUTH_TYPE 10206CURLOPT_TLSAUTH_USERNAME 10204CURLOPT_ACCEPT_ENCODING 10102CURLOPT_TRANSFER_ENCODING 207CURLOPT_GSSAPI_DELEGATION 210CURLOPT_ACCEPTTIMEOUT_MS 212CURLOPT_DNS_SERVERS 10211CURLOPT_MAIL_AUTH 10217CURLOPT_SSL_OPTIONS 216CURLOPT_TCP_KEEPALIVE 213CURLOPT_TCP_KEEPIDLE 214CURLOPT_TCP_KEEPINTVL 215CURLOPT_SAFE_UPLOAD -1