©
                    本文档使用
                    php中文网手册 发布
                
下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。
Descriptions and uses for these constants are described within the curl_setopt() and curl_getinfo() documentation.
CURLOPT_AUTOREFERER 
    ( integer )
   CURLOPT_COOKIESESSION 
    ( integer )
   CURLOPT_DNS_USE_GLOBAL_CACHE 
    ( integer )
   CURLOPT_DNS_CACHE_TIMEOUT 
    ( integer )
   CURLOPT_FTP_SSL 
       ( integer )
     CURLFTPSSL_TRY 
       ( integer )
     CURLFTPSSL_ALL 
       ( integer )
     CURLFTPSSL_CONTROL 
       ( integer )
     CURLFTPSSL_NONE 
       ( integer )
     CURLOPT_PRIVATE 
       ( integer )
     CURLOPT_FTPSSLAUTH 
       ( integer )
     CURLOPT_PORT 
    ( integer )
   CURLOPT_FILE 
    ( integer )
   CURLOPT_INFILE 
    ( integer )
   CURLOPT_INFILESIZE 
    ( integer )
   CURLOPT_URL 
    ( integer )
   CURLOPT_PROXY 
    ( integer )
   CURLOPT_VERBOSE 
    ( integer )
   CURLOPT_HEADER 
    ( integer )
   CURLOPT_HTTPHEADER 
    ( integer )
   CURLOPT_NOPROGRESS 
    ( integer )
   CURLOPT_NOBODY 
    ( integer )
   CURLOPT_FAILONERROR 
    ( integer )
   CURLOPT_UPLOAD 
    ( integer )
   CURLOPT_POST 
    ( integer )
   CURLOPT_FTPLISTONLY 
    ( integer )
   CURLOPT_FTPAPPEND 
    ( integer )
   CURLOPT_FTP_CREATE_MISSING_DIRS 
    ( integer )
   CURLOPT_NETRC 
    ( integer )
   CURLOPT_FOLLOWLOCATION 
    ( integer )
   CURLOPT_FTPASCII 
    ( integer )
   CURLOPT_PUT 
    ( integer )
   CURLOPT_MUTE 
    ( integer )
   CURLOPT_USERPWD 
    ( integer )
   CURLOPT_PROXYUSERPWD 
    ( integer )
   CURLOPT_RANGE 
    ( integer )
   CURLOPT_TIMEOUT 
    ( integer )
   CURLOPT_TIMEOUT_MS 
    ( integer )
   CURLOPT_TCP_NODELAY 
    ( integer )
   CURLOPT_POSTFIELDS 
    ( integer )
   CURLOPT_PROGRESSFUNCTION 
    ( integer )
   CURLOPT_REFERER 
    ( integer )
   CURLOPT_USERAGENT 
    ( integer )
   CURLOPT_FTPPORT 
    ( integer )
   CURLOPT_FTP_USE_EPSV 
    ( integer )
   CURLOPT_LOW_SPEED_LIMIT 
    ( integer )
   CURLOPT_LOW_SPEED_TIME 
    ( integer )
   CURLOPT_RESUME_FROM 
    ( integer )
   CURLOPT_COOKIE 
    ( integer )
   CURLOPT_SSLCERT 
    ( integer )
   CURLOPT_SSLCERTPASSWD 
    ( integer )
   CURLOPT_WRITEHEADER 
    ( integer )
   CURLOPT_SSL_VERIFYHOST 
    ( integer )
   CURLOPT_COOKIEFILE 
    ( integer )
   CURLOPT_SSLVERSION 
    ( integer )
   CURLOPT_TIMECONDITION 
    ( integer )
   CURLOPT_TIMEVALUE 
    ( integer )
   CURLOPT_CUSTOMREQUEST 
    ( integer )
   CURLOPT_STDERR 
    ( integer )
   CURLOPT_TRANSFERTEXT 
    ( integer )
   CURLOPT_RETURNTRANSFER 
    ( integer )
   CURLOPT_QUOTE 
    ( integer )
   CURLOPT_POSTQUOTE 
    ( integer )
   CURLOPT_INTERFACE 
    ( integer )
   CURLOPT_KRB4LEVEL 
    ( integer )
   CURLOPT_HTTPPROXYTUNNEL 
    ( integer )
   CURLOPT_FILETIME 
    ( integer )
   CURLOPT_WRITEFUNCTION 
    ( integer )
   CURLOPT_READFUNCTION 
    ( integer )
   CURLOPT_PASSWDFUNCTION 
    ( integer )
   CURLOPT_HEADERFUNCTION 
    ( integer )
   CURLOPT_MAXREDIRS 
    ( integer )
   CURLOPT_MAXCONNECTS 
    ( integer )
   CURLOPT_CLOSEPOLICY 
    ( integer )
   CURLOPT_FRESH_CONNECT 
    ( integer )
   CURLOPT_FORBID_REUSE 
    ( integer )
   CURLOPT_RANDOM_FILE 
    ( integer )
   CURLOPT_EGDSOCKET 
    ( integer )
   CURLOPT_CONNECTTIMEOUT 
    ( integer )
   CURLOPT_CONNECTTIMEOUT_MS 
    ( integer )
   CURLOPT_SSL_VERIFYPEER 
    ( integer )
   CURLOPT_CAINFO 
    ( integer )
   CURLOPT_CAPATH 
    ( integer )
   CURLOPT_COOKIEJAR 
    ( integer )
   CURLOPT_SSL_CIPHER_LIST 
    ( integer )
   CURLOPT_BINARYTRANSFER 
    ( integer )
   CURLOPT_NOSIGNAL 
    ( integer )
   CURLOPT_PROXYTYPE 
    ( integer )
   CURLOPT_BUFFERSIZE 
    ( integer )
   CURLOPT_HTTPGET 
    ( integer )
   CURLOPT_HTTP_VERSION 
    ( integer )
   CURLOPT_SSLKEY 
    ( integer )
   CURLOPT_SSLKEYTYPE 
    ( integer )
   CURLOPT_SSLKEYPASSWD 
    ( integer )
   CURLOPT_SSLENGINE 
    ( integer )
   CURLOPT_SSLENGINE_DEFAULT 
    ( integer )
   CURLOPT_SSLCERTTYPE 
    ( integer )
   CURLOPT_CRLF 
    ( integer )
   CURLOPT_ENCODING 
    ( integer )
   CURLOPT_PROXYPORT 
    ( integer )
   CURLOPT_UNRESTRICTED_AUTH 
    ( integer )
   CURLOPT_FTP_USE_EPRT 
    ( integer )
   CURLOPT_HTTP200ALIASES 
    ( integer )
   CURLOPT_HTTPAUTH 
    ( integer )
   CURLAUTH_BASIC 
    ( integer )
   CURLAUTH_DIGEST 
    ( integer )
   CURLAUTH_GSSNEGOTIATE 
    ( integer )
   CURLAUTH_NTLM 
    ( integer )
   CURLAUTH_ANY 
    ( integer )
   CURLAUTH_ANYSAFE 
    ( integer )
   CURLOPT_PROXYAUTH 
    ( integer )
   CURLCLOSEPOLICY_LEAST_RECENTLY_USED 
    ( integer )
   CURLCLOSEPOLICY_LEAST_TRAFFIC 
    ( integer )
   CURLCLOSEPOLICY_SLOWEST 
    ( integer )
   CURLCLOSEPOLICY_CALLBACK 
    ( integer )
   CURLCLOSEPOLICY_OLDEST 
    ( integer )
   CURLINFO_PRIVATE 
    ( integer )
   CURLINFO_EFFECTIVE_URL 
    ( integer )
   CURLINFO_HTTP_CODE 
    ( integer )
   CURLINFO_HEADER_OUT 
    ( integer )
   CURLINFO_HEADER_SIZE 
    ( integer )
   CURLINFO_REQUEST_SIZE 
    ( integer )
   CURLINFO_TOTAL_TIME 
    ( integer )
   CURLINFO_NAMELOOKUP_TIME 
    ( integer )
   CURLINFO_CONNECT_TIME 
    ( integer )
   CURLINFO_PRETRANSFER_TIME 
    ( integer )
   CURLINFO_SIZE_UPLOAD 
    ( integer )
   CURLINFO_SIZE_DOWNLOAD 
    ( integer )
   CURLINFO_SPEED_DOWNLOAD 
    ( integer )
   CURLINFO_SPEED_UPLOAD 
    ( integer )
   CURLINFO_FILETIME 
    ( integer )
   CURLINFO_SSL_VERIFYRESULT 
    ( integer )
   CURLINFO_CONTENT_LENGTH_DOWNLOAD 
    ( integer )
   CURLINFO_CONTENT_LENGTH_UPLOAD 
    ( integer )
   CURLINFO_STARTTRANSFER_TIME 
    ( integer )
   CURLINFO_CONTENT_TYPE 
    ( integer )
   CURLINFO_REDIRECT_TIME 
    ( integer )
   CURLINFO_REDIRECT_COUNT 
    ( integer )
   CURL_TIMECOND_IFMODSINCE 
    ( integer )
   CURL_TIMECOND_IFUNMODSINCE 
    ( integer )
   CURL_TIMECOND_LASTMOD 
    ( integer )
   CURL_VERSION_IPV6 
    ( integer )
   CURL_VERSION_KERBEROS4 
    ( integer )
   CURL_VERSION_SSL 
    ( integer )
   CURL_VERSION_LIBZ 
    ( integer )
   CURLVERSION_NOW 
    ( integer )
   CURLE_OK 
    ( integer )
   CURLE_UNSUPPORTED_PROTOCOL 
    ( integer )
   CURLE_FAILED_INIT 
    ( integer )
   CURLE_URL_MALFORMAT 
    ( integer )
   CURLE_URL_MALFORMAT_USER 
    ( integer )
   CURLE_COULDNT_RESOLVE_PROXY 
    ( integer )
   CURLE_COULDNT_RESOLVE_HOST 
    ( integer )
   CURLE_COULDNT_CONNECT 
    ( integer )
   CURLE_FTP_WEIRD_SERVER_REPLY 
    ( integer )
   CURLE_FTP_ACCESS_DENIED 
    ( integer )
   CURLE_FTP_USER_PASSWORD_INCORRECT 
    ( integer )
   CURLE_FTP_WEIRD_PASS_REPLY 
    ( integer )
   CURLE_FTP_WEIRD_USER_REPLY 
    ( integer )
   CURLE_FTP_WEIRD_PASV_REPLY 
    ( integer )
   CURLE_FTP_WEIRD_227_FORMAT 
    ( integer )
   CURLE_FTP_CANT_GET_HOST 
    ( integer )
   CURLE_FTP_CANT_RECONNECT 
    ( integer )
   CURLE_FTP_COULDNT_SET_BINARY 
    ( integer )
   CURLE_PARTIAL_FILE 
    ( integer )
   CURLE_FTP_COULDNT_RETR_FILE 
    ( integer )
   CURLE_FTP_WRITE_ERROR 
    ( integer )
   CURLE_FTP_QUOTE_ERROR 
    ( integer )
   CURLE_HTTP_NOT_FOUND 
    ( integer )
   CURLE_WRITE_ERROR 
    ( integer )
   CURLE_MALFORMAT_USER 
    ( integer )
   CURLE_FTP_COULDNT_STOR_FILE 
    ( integer )
   CURLE_READ_ERROR 
    ( integer )
   CURLE_OUT_OF_MEMORY 
    ( integer )
   CURLE_OPERATION_TIMEOUTED 
    ( integer )
   CURLE_FTP_COULDNT_SET_ASCII 
    ( integer )
   CURLE_FTP_PORT_FAILED 
    ( integer )
   CURLE_FTP_COULDNT_USE_REST 
    ( integer )
   CURLE_FTP_COULDNT_GET_SIZE 
    ( integer )
   CURLE_HTTP_RANGE_ERROR 
    ( integer )
   CURLE_HTTP_POST_ERROR 
    ( integer )
   CURLE_SSL_CONNECT_ERROR 
    ( integer )
   CURLE_FTP_BAD_DOWNLOAD_RESUME 
    ( integer )
   CURLE_FILE_COULDNT_READ_FILE 
    ( integer )
   CURLE_LDAP_CANNOT_BIND 
    ( integer )
   CURLE_LDAP_SEARCH_FAILED 
    ( integer )
   CURLE_LIBRARY_NOT_FOUND 
    ( integer )
   CURLE_FUNCTION_NOT_FOUND 
    ( integer )
   CURLE_ABORTED_BY_CALLBACK 
    ( integer )
   CURLE_BAD_FUNCTION_ARGUMENT 
    ( integer )
   CURLE_BAD_CALLING_ORDER 
    ( integer )
   CURLE_HTTP_PORT_FAILED 
    ( integer )
   CURLE_BAD_PASSWORD_ENTERED 
    ( integer )
   CURLE_TOO_MANY_REDIRECTS 
    ( integer )
   CURLE_UNKNOWN_TELNET_OPTION 
    ( integer )
   CURLE_TELNET_OPTION_SYNTAX 
    ( integer )
   CURLE_OBSOLETE 
    ( integer )
   CURLE_SSL_PEER_CERTIFICATE 
    ( integer )
   CURLE_GOT_NOTHING 
    ( integer )
   CURLE_SSL_ENGINE_NOTFOUND 
    ( integer )
   CURLE_SSL_ENGINE_SETFAILED 
    ( integer )
   CURLE_SEND_ERROR 
    ( integer )
   CURLE_RECV_ERROR 
    ( integer )
   CURLE_SHARE_IN_USE 
    ( integer )
   CURLE_SSL_CERTPROBLEM 
    ( integer )
   CURLE_SSL_CIPHER 
    ( integer )
   CURLE_SSL_CACERT 
    ( integer )
   CURLE_BAD_CONTENT_ENCODING 
    ( integer )
   CURLE_LDAP_INVALID_URL 
    ( integer )
   CURLE_FILESIZE_EXCEEDED 
    ( integer )
   CURLE_FTP_SSL_FAILED 
    ( integer )
   CURLFTPAUTH_DEFAULT 
    ( integer )
   CURLFTPAUTH_SSL 
    ( integer )
   CURLFTPAUTH_TLS 
    ( integer )
   CURLPROXY_HTTP 
    ( integer )
   CURLPROXY_SOCKS5 
    ( integer )
   CURL_NETRC_OPTIONAL 
    ( integer )
   CURL_NETRC_IGNORED 
    ( integer )
   CURL_NETRC_REQUIRED 
    ( integer )
   CURL_HTTP_VERSION_NONE 
    ( integer )
   CURL_HTTP_VERSION_1_0 
    ( integer )
   CURL_HTTP_VERSION_1_1 
    ( integer )
   CURLM_CALL_MULTI_PERFORM 
    ( integer )
   CURLM_OK 
    ( integer )
   CURLM_BAD_HANDLE 
    ( integer )
   CURLM_BAD_EASY_HANDLE 
    ( integer )
   CURLM_OUT_OF_MEMORY 
    ( integer )
   CURLM_INTERNAL_ERROR 
    ( integer )
   CURLMSG_DONE 
    ( integer )
   [#1] uramihsayibok, gmail, com [2015-09-02 21:07:54]
Regarding CURLE_OPERATION_TIMEDOUT vs. CURLE_OPERATION_TIMEOUTED:
Originally cURL had the constant named TIMEOUTED (read: "timeout-ed"). This was changed[1] in 2007 and v7.17.0 to be TIMEDOUT (read: "timed out") and the old constant kept in place as an alias.
PHP started off using TIMEOUTED as well. The TIMEDOUT constant was added[2] in 2012 and v5.5.0 and the old constant was *kept in place*.
If you ask me, the TIMEDOUT constant reads more nicely (not to mention is technically the correct one to use) and as long as you're using PHP 5.5+ then it is available. If you have to support older versions then I suggest you keep using the new constant and add a polyfill like
<?php
if (version_compare(PHP_VERSION, "5.5.0", "<")) {
    define("CURLE_OPERATION_TIMEDOUT", CURLE_OPERATION_TIMEOUTED);
}
?>
or
<?php
// PHP <5.5.0
defined("CURLE_OPERATION_TIMEDOUT") || define("CURLE_OPERATION_TIMEDOUT", CURLE_OPERATION_TIMEOUTED);
?>
to be removed once you stop supporting them.
[1] https://github.com/bagder/curl/commit/9f44a95522162c0f4a61093efe1bf1f58b087358#diff-d8c6cb80505e0f7d5e27fca2a682aa34L119
[2] https://github.com/php/php-src/commit/9ab45d3edbafa3ee751472c3f8d1fb3f51f38cf1#diff-ac978e3de205f1d14eb960e0eb15ef24R723
[#2] nimasdj [AT] yahoo [DOT] com [2015-07-28 16:34:39]
I hope this would be useful to convert error codes:
<?php
$curl_errno = array(
1  => "CURLE_UNSUPPORTED_PROTOCOL",
2  => "CURLE_FAILED_INIT",
3  => "CURLE_URL_MALFORMAT",
4  => "CURLE_URL_MALFORMAT_USER",
5  => "CURLE_COULDNT_RESOLVE_PROXY",
6  => "CURLE_COULDNT_RESOLVE_HOST",
7  => "CURLE_COULDNT_CONNECT",
8  => "CURLE_FTP_WEIRD_SERVER_REPLY",
9  => "CURLE_FTP_ACCESS_DENIED",
10 => "CURLE_FTP_USER_PASSWORD_INCORRECT",
11 => "CURLE_FTP_WEIRD_PASS_REPLY",
12 => "CURLE_FTP_WEIRD_USER_REPLY",
13 => "CURLE_FTP_WEIRD_PASV_REPLY",
14 => "CURLE_FTP_WEIRD_227_FORMAT",
15 => "CURLE_FTP_CANT_GET_HOST",
16 => "CURLE_FTP_CANT_RECONNECT",
17 => "CURLE_FTP_COULDNT_SET_BINARY",
18 => "CURLE_FTP_PARTIAL_FILE or CURLE_PARTIAL_FILE",
19 => "CURLE_FTP_COULDNT_RETR_FILE",
20 => "CURLE_FTP_WRITE_ERROR",
21 => "CURLE_FTP_QUOTE_ERROR",
22 => "CURLE_HTTP_NOT_FOUND or CURLE_HTTP_RETURNED_ERROR",
23 => "CURLE_WRITE_ERROR",
24 => "CURLE_MALFORMAT_USER",
25 => "CURLE_FTP_COULDNT_STOR_FILE",
26 => "CURLE_READ_ERROR",
27 => "CURLE_OUT_OF_MEMORY",
28 => "CURLE_OPERATION_TIMEDOUT or CURLE_OPERATION_TIMEOUTED",
29 => "CURLE_FTP_COULDNT_SET_ASCII",
30 => "CURLE_FTP_PORT_FAILED",
31 => "CURLE_FTP_COULDNT_USE_REST",
32 => "CURLE_FTP_COULDNT_GET_SIZE",
33 => "CURLE_HTTP_RANGE_ERROR",
34 => "CURLE_HTTP_POST_ERROR",
35 => "CURLE_SSL_CONNECT_ERROR",
36 => "CURLE_BAD_DOWNLOAD_RESUME or CURLE_FTP_BAD_DOWNLOAD_RESUME",
37 => "CURLE_FILE_COULDNT_READ_FILE",
38 => "CURLE_LDAP_CANNOT_BIND",
39 => "CURLE_LDAP_SEARCH_FAILED",
40 => "CURLE_LIBRARY_NOT_FOUND",
41 => "CURLE_FUNCTION_NOT_FOUND",
42 => "CURLE_ABORTED_BY_CALLBACK",
43 => "CURLE_BAD_FUNCTION_ARGUMENT",
44 => "CURLE_BAD_CALLING_ORDER",
45 => "CURLE_HTTP_PORT_FAILED",
46 => "CURLE_BAD_PASSWORD_ENTERED",
47 => "CURLE_TOO_MANY_REDIRECTS",
48 => "CURLE_UNKNOWN_TELNET_OPTION",
49 => "CURLE_TELNET_OPTION_SYNTAX",
50 => "CURLE_OBSOLETE",
51 => "CURLE_SSL_PEER_CERTIFICATE",
52 => "CURLE_GOT_NOTHING",
53 => "CURLE_SSL_ENGINE_NOTFOUND",
54 => "CURLE_SSL_ENGINE_SETFAILED",
55 => "CURLE_SEND_ERROR",
56 => "CURLE_RECV_ERROR",
57 => "CURLE_SHARE_IN_USE",
58 => "CURLE_SSL_CERTPROBLEM",
59 => "CURLE_SSL_CIPHER",
60 => "CURLE_SSL_CACERT",
61 => "CURLE_BAD_CONTENT_ENCODING",
62 => "CURLE_LDAP_INVALID_URL",
63 => "CURLE_FILESIZE_EXCEEDED",
64 => "CURLE_FTP_SSL_FAILED",
79 => "CURLE_SSH"
);
?>
[#3] me at ruslanbes dot com [2015-05-11 08:28:29]
Note that prior to PHP 5.5 following constants were missing and were available only through their numeric values:
CURL_SSLVERSION_DEFAULT // 0
CURL_SSLVERSION_TLSv1  // 1
CURL_SSLVERSION_SSLv2 // 2
CURL_SSLVERSION_SSLv3 // 3
This was fixed after this support request: https://bugs.php.net/bug.php?id=62318
[#4] s dot coletta at unidata dot it [2009-10-08 02:17:42]
Beware of CURLE_* constants!
On the official site:
http://curl.haxx.se/libcurl/c/libcurl-errors.html
some constants are different, some missing compared to the PHP implementation.
Some examples:
in PHP the curl error number 28 is called
CURLE_OPERATION_TIMEOUTED
while in the official site is:
CURLE_OPERATION_TIMEDOUT
So if you use the second, it won't march the error 28 because in PHP it is not defined that way.
The same is for these:
CURLE_HTTP_RETURNED_ERROR
CURLE_UPLOAD_FAILED
CURLE_INTERFACE_FAILED
CURLE_SSL_CERTPROBLEM
CURLE_SEND_FAIL_REWIND
CURLE_LOGIN_DENIED
CURLE_AGAIN
that are in someway named differently or missing from PHP.
[#5] Ron [2007-08-04 23:48:45]
<?php
$url = 'http://www.ericgiguere.com/tools/http-header-viewer.html';
// disguises the curl using fake headers and a fake user agent.
function disguise_curl($url)
{
  $curl = curl_init();
  // Setup headers - I used the same headers from Firefox version 2.0.0.6
  // below was split up because php.net said the line was too long. :/
  $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
  $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*
function cURLdownload($url, $file)
{
  if( !cURLcheckBasicFunctions() ) return "UNAVAILABLE: cURL Basic Functions";
  $ch = curl_init();
  if($ch)
  {
    $fp = fopen($file, "w");
    if($fp)
    {
      if( !curl_setopt($ch, CURLOPT_URL, $url) )
      {
        fclose($fp); // to match fopen()
        curl_close($ch); // to match curl_init()
        return "FAIL: curl_setopt(CURLOPT_URL)";
      }
      if( !curl_setopt($ch, CURLOPT_FILE, $fp) ) return "FAIL: curl_setopt(CURLOPT_FILE)";
      if( !curl_setopt($ch, CURLOPT_HEADER, 0) ) return "FAIL: curl_setopt(CURLOPT_HEADER)";
      if( !curl_exec($ch) ) return "FAIL: curl_exec()";
      curl_close($ch);
      fclose($fp);
      return "SUCCESS: $file [$url]";
    }
    else return "FAIL: fopen()";
  }
  else return "FAIL: curl_init()";
}
// Download from 'example.com' to 'example.txt'
echo cURLdownload("http://www.example.com", "example.txt");
?>
- JL????