Set an option for a cURL transfer (original) (raw)

CURLOPT_ABSTRACT_UNIX_SOCKET

Enables the use of an abstract Unix domain socket instead of establishing a TCP connection to a host and sets the path to the given string. This option shares the same semantics as CURLOPT_UNIX_SOCKET_PATH. These two options share the same storage and therefore only one of them can be set per handle.

Available since PHP 7.3.0 and cURL 7.53.0

CURLOPT_CAINFO

The name of a file holding one or more certificates to verify the peer with. This only makes sense when used in combination with**CURLOPT_SSL_VERIFYPEER**.

Might require an absolute path.

CURLOPT_CAPATH

A directory that holds multiple CA certificates. Use this option alongside CURLOPT_SSL_VERIFYPEER.

CURLOPT_COOKIE

The contents of the "Cookie: " header to be used in the HTTP request. Note that multiple cookies are separated with a semicolon followed by a space (e.g., "fruit=apple; colour=red")

CURLOPT_COOKIEFILE

The name of the file containing the cookie data. The cookie file can be in Netscape format, or just plain HTTP-style headers dumped into a file. If the name is an empty string, no cookies are loaded, but cookie handling is still enabled.

CURLOPT_COOKIEJAR

The name of a file to save all internal cookies to when the handle is closed, e.g. after a call to curl_close.

CURLOPT_COOKIELIST

A cookie string (i.e. a single line in Netscape/Mozilla format, or a regular HTTP-style Set-Cookie header) adds that single cookie to the internal cookie store."ALL" erases all cookies held in memory."SESS" erases all session cookies held in memory."FLUSH" writes all known cookies to the file specified by CURLOPT_COOKIEJAR."RELOAD" loads all cookies from the files specified by CURLOPT_COOKIEFILE.

Available since PHP 5.5.0 and cURL 7.14.1.

CURLOPT_CUSTOMREQUEST

A custom request method to use instead of"GET" or "HEAD" when doing a HTTP request. This is useful for doing"DELETE" or other, more obscure HTTP requests. Valid values are things like "GET","POST", "CONNECT" and so on; i.e. Do not enter a whole HTTP request line here. For instance, entering "GET /index.html HTTP/1.0\r\n\r\n" would be incorrect.

Note:

Don't do this without making sure the server supports the custom request method first.

CURLOPT_DEFAULT_PROTOCOL

The default protocol to use if the URL is missing a scheme name.

Added in cURL 7.45.0. Available since PHP 7.0.7.

CURLOPT_DNS_INTERFACE

Set the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address).

Added in cURL 7.33.0. Available since PHP 7.0.7.

CURLOPT_DNS_LOCAL_IP4

Set the local IPv4 address that the resolver should bind to. The argument should contain a single numerical IPv4 address as a string.

Added in cURL 7.33.0. Available since PHP 7.0.7.

CURLOPT_DNS_LOCAL_IP6

Set the local IPv6 address that the resolver should bind to. The argument should contain a single numerical IPv6 address as a string.

Added in cURL 7.33.0. Available since PHP 7.0.7.

CURLOPT_EGDSOCKET

Like CURLOPT_RANDOM_FILE, except a filename to an Entropy Gathering Daemon socket.

CURLOPT_ENCODING

The contents of the "Accept-Encoding: " header. This enables decoding of the response. Supported encodings are"identity", "deflate", and"gzip". If an empty string, "", is set, a header containing all supported encoding types is sent.

Added in cURL 7.10.

CURLOPT_FTPPORT

The value which will be used to get the IP address to use for the FTP "PORT" instruction. The "PORT" instruction tells the remote server to connect to our specified IP address. The string may be a plain IP address, a hostname, a network interface name (under Unix), or just a plain '-' to use the systems default IP address.

CURLOPT_INTERFACE

The name of the outgoing network interface to use. This can be an interface name, an IP address or a host name.

CURLOPT_KEYPASSWD

The password required to use the CURLOPT_SSLKEY or CURLOPT_SSH_PRIVATE_KEYFILE private key.

Added in cURL 7.16.1.

CURLOPT_KRB4LEVEL

The KRB4 (Kerberos 4) security level. Any of the following values (in order from least to most powerful) are valid:"clear","safe","confidential","private".. If the string does not match one of these,"private" is used. Setting this option to NULL will disable KRB4 security. Currently KRB4 security only works with FTP transactions.

CURLOPT_LOGIN_OPTIONS

Can be used to set protocol specific login options, such as the preferred authentication mechanism via "AUTH=NTLM" or "AUTH=*", and should be used in conjunction with the**CURLOPT_USERNAME** option.

Added in cURL 7.34.0. Available since PHP 7.0.7.

CURLOPT_PINNEDPUBLICKEY

Set the pinned public key. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and separated by ";".

Added in cURL 7.39.0. Available since PHP 7.0.7.

CURLOPT_POSTFIELDS

The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path. The filetype can be explicitly specified by following the filename with the type in the format ';type=mimetype'. This parameter can either be passed as a urlencoded string like 'para1=val1&para2=val2&...' or as an array with the field name as key and field data as value. If value is an array, theContent-Type header will be set tomultipart/form-data. As of PHP 5.2.0, value must be an array if files are passed to this option with the @ prefix. As of PHP 5.5.0, the @ prefix is deprecated and files can be sent using CURLFile. The @ prefix can be disabled for safe passing of values beginning with @ by setting the CURLOPT_SAFE_UPLOAD option to TRUE.

CURLOPT_PRIVATE

Any data that should be associated with this cURL handle. This data can subsequently be retrieved with the**CURLINFO_PRIVATE** option ofcurl_getinfo(). cURL does nothing with this data. When using a cURL multi handle, this private data is typically a unique key to identify a standard cURL handle.

Added in cURL 7.10.3.

CURLOPT_PRE_PROXY

Set a string holding the host name or dotted numerical IP address to be used as the preproxy that curl connects to before it connects to the HTTP(S) proxy specified in the CURLOPT_PROXY option for the upcoming request. The preproxy can only be a SOCKS proxy and it should be prefixed with[scheme]:// to specify which kind of socks is used. A numerical IPv6 address must be written within [brackets]. Setting the preproxy to an empty string explicitly disables the use of a preproxy. To specify port number in this string, append :[port] to the end of the host name. The proxy's port number may optionally be specified with the separate option CURLOPT_PROXYPORT. Defaults to using port 1080 for proxies if a port is not specified.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY

The HTTP proxy to tunnel requests through.

CURLOPT_PROXY_SERVICE_NAME

The proxy authentication service name.

Added in cURL 7.34.0. Available since PHP 7.0.7.

CURLOPT_PROXY_CAINFO

The path to proxy Certificate Authority (CA) bundle. Set the path as a string naming a file holding one or more certificates to verify the HTTPS proxy with. This option is for connecting to an HTTPS proxy, not an HTTPS server. Defaults set to the system path where libcurl's cacert bundle is assumed to be stored.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_CAPATH

The directory holding multiple CA certificates to verify the HTTPS proxy with.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_CRLFILE

Set the file name with the concatenation of CRL (Certificate Revocation List) in PEM format to use in the certificate validation that occurs during the SSL exchange.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_KEYPASSWD

Set the string be used as the password required to use the CURLOPT_PROXY_SSLKEY private key. You never needed a passphrase to load a certificate but you need one to load your private key. This option is for connecting to an HTTPS proxy, not an HTTPS server.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_PINNEDPUBLICKEY

Set the pinned public key for HTTPS proxy. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and separated by ";"

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_SSLCERT

The file name of your client certificate used to connect to the HTTPS proxy. The default format is "P12" on Secure Transport and "PEM" on other engines, and can be changed with CURLOPT_PROXY_SSLCERTTYPE. With NSS or Secure Transport, this can also be the nickname of the certificate you wish to authenticate with as it is named in the security database. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_SSLCERTTYPE

The format of your client certificate used when connecting to an HTTPS proxy. Supported formats are "PEM" and "DER", except with Secure Transport. OpenSSL (versions 0.9.3 and later) and Secure Transport (on iOS 5 or later, or OS X 10.7 or later) also support "P12" for PKCS#12-encoded files. Defaults to "PEM".

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_SSL_CIPHER_LIST

The list of ciphers to use for the connection to the HTTPS proxy. The list must be syntactically correct, it consists of one or more cipher strings separated by colons. Commas or spaces are also acceptable separators but colons are normally used, !, - and + can be used as operators.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_TLS13_CIPHERS

The list of cipher suites to use for the TLS 1.3 connection to a proxy. The list must be syntactically correct, it consists of one or more cipher suite strings separated by colons. This option is currently used only when curl is built to use OpenSSL 1.1.1 or later. If you are using a different SSL backend you can try setting TLS 1.3 cipher suites by using the CURLOPT_PROXY_SSL_CIPHER_LIST option.

Available since PHP 7.3.0 and libcurl >= cURL 7.61.0. Available when built with OpenSSL >= 1.1.1.

CURLOPT_PROXY_SSLKEY

The file name of your private key used for connecting to the HTTPS proxy. The default format is "PEM" and can be changed with CURLOPT_PROXY_SSLKEYTYPE. (iOS and Mac OS X only) This option is ignored if curl was built against Secure Transport.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0. Available if built TLS enabled.

CURLOPT_PROXY_SSLKEYTYPE

The format of your private key. Supported formats are "PEM", "DER" and "ENG".

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_TLSAUTH_PASSWORD

The password to use for the TLS authentication method specified with the CURLOPT_PROXY_TLSAUTH_TYPE option. Requires that the CURLOPT_PROXY_TLSAUTH_USERNAME option to also be set.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_TLSAUTH_TYPE

The method of the TLS authentication used for the HTTPS connection. Supported method is "SRP".

Note:

Secure Remote Password (SRP) authentication for TLS provides mutual authentication if both sides have a shared secret. To use TLS-SRP, you must also set the CURLOPT_PROXY_TLSAUTH_USERNAME and CURLOPT_PROXY_TLSAUTH_PASSWORD options.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXY_TLSAUTH_USERNAME

Tusername to use for the HTTPS proxy TLS authentication method specified with the CURLOPT_PROXY_TLSAUTH_TYPE option. Requires that the**CURLOPT_PROXY_TLSAUTH_PASSWORD** option to also be set.

Available since PHP 7.3.0 and libcurl >= cURL 7.52.0.

CURLOPT_PROXYUSERPWD

A username and password formatted as"[username]:[password]" to use for the connection to the proxy.

CURLOPT_RANDOM_FILE

A filename to be used to seed the random number generator for SSL.

CURLOPT_RANGE

Range(s) of data to retrieve in the format"X-Y" where X or Y are optional. HTTP transfers also support several intervals, separated with commas in the format"X-Y,N-M".

CURLOPT_REFERER

The contents of the "Referer: " header to be used in a HTTP request.

CURLOPT_SERVICE_NAME

The authentication service name.

Added in cURL 7.43.0. Available since PHP 7.0.7.

CURLOPT_SSH_HOST_PUBLIC_KEY_MD5

A string containing 32 hexadecimal digits. The string should be the MD5 checksum of the remote host's public key, and libcurl will reject the connection to the host unless the md5sums match. This option is only for SCP and SFTP transfers.

Added in cURL 7.17.1.

CURLOPT_SSH_PUBLIC_KEYFILE

The file name for your public key. If not used, libcurl defaults to $HOME/.ssh/id_dsa.pub if the HOME environment variable is set, and just "id_dsa.pub" in the current directory if HOME is not set.

Added in cURL 7.16.1.

CURLOPT_SSH_PRIVATE_KEYFILE

The file name for your private key. If not used, libcurl defaults to $HOME/.ssh/id_dsa if the HOME environment variable is set, and just "id_dsa" in the current directory if HOME is not set. If the file is password-protected, set the password with CURLOPT_KEYPASSWD.

Added in cURL 7.16.1.

CURLOPT_SSL_CIPHER_LIST

A list of ciphers to use for SSL. For example,RC4-SHA and TLSv1 are valid cipher lists.

CURLOPT_SSLCERT

The name of a file containing a PEM formatted certificate.

CURLOPT_SSLCERTPASSWD

The password required to use the**CURLOPT_SSLCERT** certificate.

CURLOPT_SSLCERTTYPE

The format of the certificate. Supported formats are"PEM" (default), "DER", and "ENG". As of OpenSSL 0.9.3, "P12" (for PKCS#12-encoded files) is also supported.

Added in cURL 7.9.3.

CURLOPT_SSLENGINE

The identifier for the crypto engine of the private SSL key specified in CURLOPT_SSLKEY.

CURLOPT_SSLENGINE_DEFAULT

The identifier for the crypto engine used for asymmetric crypto operations.

CURLOPT_SSLKEY

The name of a file containing a private SSL key.

CURLOPT_SSLKEYPASSWD

The secret password needed to use the private SSL key specified in**CURLOPT_SSLKEY**.

Note:

Since this option contains a sensitive password, remember to keep the PHP script it is contained within safe.

CURLOPT_SSLKEYTYPE

The key type of the private SSL key specified in**CURLOPT_SSLKEY**. Supported key types are"PEM" (default), "DER", and "ENG".

CURLOPT_TLS13_CIPHERS

The list of cipher suites to use for the TLS 1.3 connection. The list must be syntactically correct, it consists of one or more cipher suite strings separated by colons. This option is currently used only when curl is built to use OpenSSL 1.1.1 or later. If you are using a different SSL backend you can try setting TLS 1.3 cipher suites by using the CURLOPT_SSL_CIPHER_LIST option.

Available since PHP 7.3.0 and libcurl >= cURL 7.61.0. Available when built with OpenSSL >= 1.1.1.

CURLOPT_UNIX_SOCKET_PATH

Enables the use of Unix domain sockets as connection endpoint and sets the path to the given string.

Added in cURL 7.40.0. Available since PHP 7.0.7.

CURLOPT_URL

The URL to fetch. This can also be set when initializing a session with curl_init().

CURLOPT_USERAGENT

The contents of the "User-Agent: " header to be used in a HTTP request.

CURLOPT_USERNAME

The user name to use in authentication.

Added in cURL 7.19.1. Available since PHP 5.5.0.

CURLOPT_USERPWD

A username and password formatted as"[username]:[password]" to use for the connection.

CURLOPT_XOAUTH2_BEARER

Specifies the OAuth 2.0 access token.

Added in cURL 7.33.0. Available since PHP 7.0.7.