CURL_SETOPT(3) 1 CURL_SETOPT(3)
curl_setopt - Set an option for a cURL transfer
SYNOPSIS
bool curl_setopt (resource $ch, int $option, mixed $value)
DESCRIPTION
Sets an option on the given cURL session handle.
PARAMETERS
o $ch
-A cURL handle returned by curl_init(3).
o $option
- The CURLOPT_XXX option to set.
o $value
- The value to be set on $option. $value should be a bool for the following values of the $option parameter:
+--------------------------------+--------------------------------------+---+
| Option | | |
| | | |
| | Set $value to | |
| | | |
| | Notes | |
| | | |
+--------------------------------+--------------------------------------+---+
| | | |
| CURLOPT_AUTOREFERER | | |
| | | |
| | | |
| | TRUE to automatically set the Ref- | |
| | erer: field in requests where it | |
| | follows a Location: redirect. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_BINARYTRANSFER | | |
| | | |
| | | |
| | TRUE to return the raw output when | |
| | CURLOPT_RETURNTRANSFER is used. | |
| | | |
| | From PHP 5.1.3, this option has no | |
| | effect: the raw output will always | |
| | be returned when CURLOPT_RETURN- | |
| | TRANSFER is used. | |
| | | |
| | | |
| CURLOPT_COOKIESESSION | | |
| | | |
| | | |
| | TRUE to mark this as a new cookie | |
| | "session". It will force libcurl to | |
| | ignore all cookies it is about to | |
| | load that are "session cookies" from | |
| | the previous session. By default, | |
| | libcurl always stores and loads all | |
| | cookies, independent if they are | |
| | session cookies or not. Session | |
| | cookies are cookies without expiry | |
| | date and they are meant to be alive | |
| | and existing for this "session" | |
| | only. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_CERTINFO | | |
| | | |
| | | |
| | TRUE to output SSL certification | |
| | information to STDERR on secure | |
| | transfers. | |
| | | |
| | Added in cURL 7.19.1. Available | |
| | since PHP 5.3.2. Requires CUR- | |
| | LOPT_VERBOSE to be on to have an | |
| | effect. | |
| | | |
| | | |
| CURLOPT_CONNECT_ONLY | | |
| | | |
| | | |
| | TRUE tells the library to perform | |
| | all the required proxy authentica- | |
| | tion and connection setup, but no | |
| | data transfer. This option is imple- | |
| | mented for HTTP, SMTP and POP3. | |
| | | |
| | Added in 7.15.2. Available since | |
| | PHP 5.5.0. | |
| | | |
| | | |
| CURLOPT_CRLF | | |
| | | |
| | | |
| | TRUE to convert Unix newlines to | |
| | CRLF newlines on transfers. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_DNS_USE_GLOBAL_CACHE | | |
| | | |
| | | |
| | TRUE to use a global DNS cache. This | |
| | option is not thread-safe and is | |
| | enabled by default. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FAILONERROR | | |
| | | |
| | | |
| | TRUE to fail verbosely if the HTTP | |
| | code returned is greater than or | |
| | equal to 400. The default behavior | |
| | is to return the page normally, | |
| | ignoring the code. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FILETIME | | |
| | | |
| | | |
| | TRUE to attempt to retrieve the mod- | |
| | ification date of the remote docu- | |
| | ment. This value can be retrieved | |
| | using the $CURLINFO_FILETIME option | |
| | with curl_getinfo(3). | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FOLLOWLOCATION | | |
| | | |
| | | |
| | TRUE to follow any "Location: " | |
| | header that the server sends as part | |
| | of the HTTP header (note this is | |
| | recursive, PHP will follow as many | |
| | "Location: " headers that it is | |
| | sent, unless CURLOPT_MAXREDIRS is | |
| | set). | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FORBID_REUSE | | |
| | | |
| | | |
| | TRUE to force the connection to | |
| | explicitly close when it has fin- | |
| | ished processing, and not be pooled | |
| | for reuse. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FRESH_CONNECT | | |
| | | |
| | | |
| | TRUE to force the use of a new con- | |
| | nection instead of a cached one. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FTP_USE_EPRT | | |
| | | |
| | | |
| | TRUE to use EPRT (and LPRT) when | |
| | doing active FTP downloads. Use | |
| | FALSE to disable EPRT and LPRT and | |
| | use PORT only. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FTP_USE_EPSV | | |
| | | |
| | | |
| | TRUE to first try an EPSV command | |
| | for FTP transfers before reverting | |
| | back to PASV. Set to FALSE to dis- | |
| | able EPSV. | |
| | | |
| | | |
| | | |
| | | |
|CURLOPT_FTP_CREATE_MISSING_DIRS | | |
| | | |
| | | |
| | TRUE to create missing directories | |
| | when an FTP operation encounters a | |
| | path that currently doesn't exist. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FTPAPPEND | | |
| | | |
| | | |
| | TRUE to append to the remote file | |
| | instead of overwriting it. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_TCP_NODELAY | | |
| | | |
| | | |
| | TRUE to disable TCP's Nagle algo- | |
| | rithm, which tries to minimize the | |
| | number of small packets on the net- | |
| | work. | |
| | | |
| | Available since PHP 5.2.1 for ver- | |
| | sions compiled with libcurl 7.11.2 | |
| | or greater. | |
| | | |
| | | |
| CURLOPT_FTPASCII | | |
| | | |
| | An alias of CURLOPT_TRANSFERTEXT. | |
| | Use that instead. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FTPLISTONLY | | |
| | | |
| | | |
| | TRUE to only list the names of an | |
| | FTP directory. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_HEADER | | |
| | | |
| | | |
| | TRUE to include the header in the | |
| | output. | |
| | | |
| | | |
| | | |
| | | |
| CURLINFO_HEADER_OUT | | |
| | | |
| | | |
| | TRUE to track the handle's request | |
| | string. | |
| | | |
| | Available since PHP 5.1.3. The | |
| | CURLINFO_ prefix is intentional. | |
| | | |
| | | |
| CURLOPT_HTTPGET | | |
| | | |
| | | |
| | TRUE to reset the HTTP request | |
| | method to GET. Since GET is the | |
| | default, this is only necessary if | |
| | the request method has been changed. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_HTTPPROXYTUNNEL | | |
| | | |
| | | |
| | TRUE to tunnel through a given HTTP | |
| | proxy. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_MUTE | | |
| | | |
| | | |
| | TRUE to be completely silent with | |
| | regards to the cURL functions. | |
| | | |
| | Removed in cURL 7.15.5 (You can use | |
| | CURLOPT_RETURNTRANSFER instead) | |
| | | |
| | | |
| CURLOPT_NETRC | | |
| | | |
| | | |
| | TRUE to scan the ~/.netrc file to | |
| | find a username and password for the | |
| | remote site that a connection is | |
| | being established with. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_NOBODY | | |
| | | |
| | | |
| | TRUE to exclude the body from the | |
| | output. Request method is then set | |
| | to HEAD. Changing this to FALSE does | |
| | not change it to GET. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_NOPROGRESS | | |
| | | |
| | | |
| | TRUE to disable the progress meter | |
| | for cURL transfers. | |
| | | |
| | Note | |
| | | |
| | | |
| | PHP automati- | |
| | cally sets this | |
| | option to TRUE, | |
| | this should | |
| | only be changed | |
| | for debugging | |
| | purposes. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_NOSIGNAL | | |
| | | |
| | | |
| | TRUE to ignore any cURL function | |
| | that causes a signal to be sent to | |
| | the PHP process. This is turned on | |
| | by default in multi-threaded SAPIs | |
| | so timeout options can still be | |
| | used. | |
| | | |
| | Added in cURL 7.10. | |
| | | |
| | | |
| CURLOPT_POST | | |
| | | |
| | | |
| | TRUE to do a regular HTTP POST. This | |
| | POST is the normal application/x- | |
| | www-form-urlencoded kind, most com- | |
| | monly used by HTML forms. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_PUT | | |
| | | |
| | | |
| | TRUE to HTTP PUT a file. The file to | |
| | PUT must be set with CURLOPT_INFILE | |
| | and CURLOPT_INFILESIZE. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_RETURNTRANSFER | | |
| | | |
| | | |
| | TRUE to return the transfer as a | |
| | string of the return value of | |
| | curl_exec(3) instead of outputting | |
| | it out directly. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_SAFE_UPLOAD | | |
| | | |
| | | |
| | TRUE to disable support for the @ | |
| | prefix for uploading files in CUR- | |
| | LOPT_POSTFIELDS, which means that | |
| | values starting with @ can be safely | |
| | passed as fields. CURLFile may be | |
| | used for uploads instead. | |
| | | |
| | Added in PHP 5.5.0 with FALSE as | |
| | the default value. PHP 5.6.0 changes | |
| | the default value to TRUE. | |
| | | |
| | | |
| CURLOPT_SSL_VERIFYPEER | | |
| | | |
| | | |
| | FALSE to stop cURL from verifying | |
| | the peer's certificate. Alternate | |
| | certificates to verify against can | |
| | be specified with the CURLOPT_CAINFO | |
| | option or a certificate directory | |
| | can be specified with the CUR- | |
| | LOPT_CAPATH option. | |
| | | |
| | | |
| | TRUE by default as of cURL 7.10. | |
| | Default bundle installed as of cURL | |
| | 7.10. | |
| | | |
| | | |
| CURLOPT_TRANSFERTEXT | | |
| | | |
| | | |
| | TRUE to use ASCII mode for FTP | |
| | transfers. For LDAP, it retrieves | |
| | data in plain text instead of HTML. | |
| | On Windows systems, it will not set | |
| | STDOUT to binary mode. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_UNRESTRICTED_AUTH | | |
| | | |
| | | |
| | TRUE to keep sending the username | |
| | and password when following loca- | |
| | tions (using CURLOPT_FOLLOWLOCA- | |
| | TION), even when the hostname has | |
| | changed. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_UPLOAD | | |
| | | |
| | | |
| | TRUE to prepare for an upload. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_VERBOSE | | |
| | | |
| | | |
| | TRUE to output verbose information. | |
| | Writes output to STDERR, or the file | |
| | specified using CURLOPT_STDERR. | |
| | | |
| | | |
| | | |
+--------------------------------+--------------------------------------+---+
$value should be an integer for the following values of the $option parameter:
+-----------------------------+--------------------------------------+---+
| Option | | |
| | | |
| | Set $value to | |
| | | |
| | Notes | |
| | | |
+-----------------------------+--------------------------------------+---+
| | | |
| CURLOPT_BUFFERSIZE | | |
| | | |
| | The size of the buffer to use for | |
| | each read. There is no guarantee | |
| | this request will be fulfilled, how- | |
| | ever. | |
| | | |
| | Added in cURL 7.10. | |
| | | |
| | | |
| CURLOPT_CLOSEPOLICY | | |
| | | |
| | One of the CURLCLOSEPOLICY_* val- | |
| | ues. | |
| | | |
| | Note | |
| | | |
| | | |
| | This option is | |
| | deprecated, as | |
| | it was never | |
| | implemented in | |
| | cURL and never | |
| | had any effect. | |
| | | |
| | Removed in PHP 5.6.0. | |
| | | |
| | | |
| CURLOPT_CONNECTTIMEOUT | | |
| | | |
| | The number of seconds to wait while | |
| | trying to connect. Use 0 to wait | |
| | indefinitely. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_CONNECTTIMEOUT_MS | | |
| | | |
| | The number of milliseconds to wait | |
| | while trying to connect. Use 0 to | |
| | wait indefinitely. If libcurl is | |
| | built to use the standard system | |
| | name resolver, that portion of the | |
| | connect will still use full-second | |
| | resolution for timeouts with a mini- | |
| | mum timeout allowed of one second. | |
| | | |
| | Added in cURL 7.16.2. Available | |
| | since PHP 5.2.3. | |
| | | |
| | | |
| CURLOPT_DNS_CACHE_TIMEOUT | | |
| | | |
| | The number of seconds to keep DNS | |
| | entries in memory. This option is | |
| | set to 120 (2 minutes) by default. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_FTPSSLAUTH | | |
| | | |
| | The FTP authentication method (when | |
| | is activated): CURLFTPAUTH_SSL (try | |
| | SSL first), CURLFTPAUTH_TLS (try TLS | |
| | first), or CURLFTPAUTH_DEFAULT (let | |
| | cURL decide). | |
| | | |
| | Added in cURL 7.12.2. | |
| | | |
| | | |
| CURLOPT_HTTP_VERSION | | |
| | | |
| | $CURL_HTTP_VERSION_NONE (default, | |
| | lets CURL decide which version to | |
| | use), $CURL_HTTP_VERSION_1_0 (forces | |
| | HTTP/1.0), or $CURL_HTTP_VERSION_1_1 | |
| | (forces HTTP/1.1). | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_HTTPAUTH | | |
| | | |
| | The HTTP authentication method(s) | |
| | to use. The options are: | |
| | $CURLAUTH_BASIC, $CURLAUTH_DIGEST, | |
| | $CURLAUTH_GSSNEGOTIATE, | |
| | $CURLAUTH_NTLM, $CURLAUTH_ANY, and | |
| | $CURLAUTH_ANYSAFE. The bitwise | | |
| | (or) operator can be used to combine | |
| | more than one method. If this is | |
| | done, cURL will poll the server to | |
| | see what methods it supports and | |
| | pick the best one. $CURLAUTH_ANY is | |
| | an alias for CURLAUTH_BASIC | | |
| | CURLAUTH_DIGEST | CURLAUTH_GSSNEGO- | |
| | TIATE | CURLAUTH_NTLM. | |
| | $CURLAUTH_ANYSAFE is an alias for | |
| | CURLAUTH_DIGEST | CURLAUTH_GSSNEGO- | |
| | TIATE | CURLAUTH_NTLM. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_INFILESIZE | | |
| | | |
| | The expected size, in bytes, of the | |
| | file when uploading a file to a | |
| | remote site. Note that using this | |
| | option will not stop libcurl from | |
| | sending more data, as exactly what | |
| | is sent depends on CURLOPT_READFUNC- | |
| | TION. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_LOW_SPEED_LIMIT | | |
| | | |
| | The transfer speed, in bytes per | |
| | second, that the transfer should be | |
| | below during the count of CUR- | |
| | LOPT_LOW_SPEED_TIME seconds before | |
| | PHP considers the transfer too slow | |
| | and aborts. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_LOW_SPEED_TIME | | |
| | | |
| | The number of seconds the transfer | |
| | speed should be below CUR- | |
| | LOPT_LOW_SPEED_LIMIT before PHP con- | |
| | siders the transfer too slow and | |
| | aborts. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_MAXCONNECTS | | |
| | | |
| | The maximum amount of persistent | |
| | connections that are allowed. When | |
| | the limit is reached, CURLOPT_CLOSE- | |
| | POLICY is used to determine which | |
| | connection to close. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_MAXREDIRS | | |
| | | |
| | The maximum amount of HTTP redirec- | |
| | tions to follow. Use this option | |
| | alongside CURLOPT_FOLLOWLOCATION. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_PORT | | |
| | | |
| | An alternative port number to con- | |
| | nect to. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_POSTREDIR | | |
| | | |
| | A bitmask of 1 (301 Moved Perma- | |
| | nently), 2 (302 Found) and 4 (303 | |
| | See Other) if the HTTP POST method | |
| | should be maintained when CUR- | |
| | LOPT_FOLLOWLOCATION is set and a | |
| | specific type of redirect occurs. | |
| | | |
| | Added in cURL 7.19.1. Available | |
| | since PHP 5.3.2. | |
| | | |
| | | |
| CURLOPT_PROTOCOLS | | |
| | | |
| | Bitmask of CURLPROTO_* values. If | |
| | used, this bitmask limits what pro- | |
| | tocols libcurl may use in the trans- | |
| | fer. This allows you to have a | |
| | libcurl built to support a wide | |
| | range of protocols but still limit | |
| | specific transfers to only be | |
| | allowed to use a subset of them. By | |
| | default libcurl will accept all pro- | |
| | tocols it supports. See also CUR- | |
| | LOPT_REDIR_PROTOCOLS. Valid proto- | |
| | col options are: $CURLPROTO_HTTP, | |
| | $CURLPROTO_HTTPS, $CURLPROTO_FTP, | |
| | $CURLPROTO_FTPS, $CURLPROTO_SCP, | |
| | $CURLPROTO_SFTP, $CURLPROTO_TELNET, | |
| | $CURLPROTO_LDAP, $CURLPROTO_LDAPS, | |
| | $CURLPROTO_DICT, $CURLPROTO_FILE, | |
| | $CURLPROTO_TFTP, $CURLPROTO_ALL | |
| | | |
| | Added in cURL 7.19.4. | |
| | | |
| | | |
| CURLOPT_PROXYAUTH | | |
| | | |
| | The HTTP authentication method(s) | |
| | to use for the proxy connection. Use | |
| | the same bitmasks as described in | |
| | CURLOPT_HTTPAUTH. For proxy authen- | |
| | tication, only $CURLAUTH_BASIC and | |
| | $CURLAUTH_NTLM are currently sup- | |
| | ported. | |
| | | |
| | Added in cURL 7.10.7. | |
| | | |
| | | |
| CURLOPT_PROXYPORT | | |
| | | |
| | The port number of the proxy to | |
| | connect to. This port number can | |
| | also be set in CURLOPT_PROXY. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_PROXYTYPE | | |
| | | |
| | Either $CURLPROXY_HTTP (default) or | |
| | $CURLPROXY_SOCKS5. | |
| | | |
| | Added in cURL 7.10. | |
| | | |
| | | |
| CURLOPT_REDIR_PROTOCOLS | | |
| | | |
| | Bitmask of CURLPROTO_* values. If | |
| | used, this bitmask limits what pro- | |
| | tocols libcurl may use in a transfer | |
| | that it follows to in a redirect | |
| | when CURLOPT_FOLLOWLOCATION is | |
| | enabled. This allows you to limit | |
| | specific transfers to only be | |
| | allowed to use a subset of protocols | |
| | in redirections. By default libcurl | |
| | will allow all protocols except for | |
| | FILE and SCP. This is a difference | |
| | compared to pre-7.19.4 versions | |
| | which unconditionally would follow | |
| | to all protocols supported. See also | |
| | CURLOPT_PROTOCOLS for protocol con- | |
| | stant values. | |
| | | |
| | Added in cURL 7.19.4. | |
| | | |
| | | |
| CURLOPT_RESUME_FROM | | |
| | | |
| | The offset, in bytes, to resume a | |
| | transfer from. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_SSL_VERIFYHOST | | |
| | | |
| | 1 to check the existence of a com- | |
| | mon name in the SSL peer certifi- | |
| | cate. 2 to check the existence of a | |
| | common name and also verify that it | |
| | matches the hostname provided. In | |
| | production environments the value of | |
| | this option should be kept at 2 | |
| | (default value). | |
| | | |
| | Support for value 1 removed in cURL | |
| | 7.28.1 | |
| | | |
| | | |
| CURLOPT_SSLVERSION | | |
| | | |
| | One of CURL_SSLVERSION_DEFAULT (0), | |
| | CURL_SSLVERSION_TLSv1 (1), | |
| | CURL_SSLVERSION_SSLv2 (2), | |
| | CURL_SSLVERSION_SSLv3 (3), | |
| | CURL_SSLVERSION_TLSv1_0 (4), | |
| | CURL_SSLVERSION_TLSv1_1 (5) or | |
| | CURL_SSLVERSION_TLSv1_2 (6). | |
| | | |
| | Note | |
| | | |
| | | |
| | Your best bet | |
| | is to not set | |
| | this and let it | |
| | use the | |
| | default. Set- | |
| | ting it to 2 or | |
| | 3 is very dan- | |
| | gerous given | |
| | the known vul- | |
| | nerabilities in | |
| | SSLv2 and | |
| | SSLv3. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_TIMECONDITION | | |
| | | |
| | How CURLOPT_TIMEVALUE is treated. | |
| | Use $CURL_TIMECOND_IFMODSINCE to | |
| | return the page only if it has been | |
| | modified since the time specified in | |
| | CURLOPT_TIMEVALUE. If it hasn't been | |
| | modified, a "304 Not Modified" | |
| | header will be returned assuming | |
| | CURLOPT_HEADER is TRUE. Use | |
| | $CURL_TIMECOND_IFUNMODSINCE for the | |
| | reverse effect. $CURL_TIME- | |
| | COND_IFMODSINCE is the default. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_TIMEOUT | | |
| | | |
| | The maximum number of seconds to | |
| | allow cURL functions to execute. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_TIMEOUT_MS | | |
| | | |
| | The maximum number of milliseconds | |
| | to allow cURL functions to execute. | |
| | If libcurl is built to use the stan- | |
| | dard system name resolver, that por- | |
| | tion of the connect will still use | |
| | full-second resolution for timeouts | |
| | with a minimum timeout allowed of | |
| | one second. | |
| | | |
| | Added in cURL 7.16.2. Available | |
| | since PHP 5.2.3. | |
| | | |
| | | |
| CURLOPT_TIMEVALUE | | |
| | | |
| | The time in seconds since January | |
| | 1st, 1970. The time will be used by | |
| | CURLOPT_TIMECONDITION. By default, | |
| | $CURL_TIMECOND_IFMODSINCE is used. | |
| | | |
| | | |
| | | |
| | | |
|CURLOPT_MAX_RECV_SPEED_LARGE | | |
| | | |
| | If a download exceeds this speed | |
| | (counted in bytes per second) on | |
| | cumulative average during the trans- | |
| | fer, the transfer will pause to keep | |
| | the average rate less than or equal | |
| | to the parameter value. Defaults to | |
| | unlimited speed. | |
| | | |
| | Added in cURL 7.15.5. Available | |
| | since PHP 5.4.0. | |
| | | |
| | | |
|CURLOPT_MAX_SEND_SPEED_LARGE | | |
| | | |
| | If an upload exceeds this speed | |
| | (counted in bytes per second) on | |
| | cumulative average during the trans- | |
| | fer, the transfer will pause to keep | |
| | the average rate less than or equal | |
| | to the parameter value. Defaults to | |
| | unlimited speed. | |
| | | |
| | Added in cURL 7.15.5. Available | |
| | since PHP 5.4.0. | |
| | | |
| | | |
| CURLOPT_SSH_AUTH_TYPES | | |
| | | |
| | A bitmask consisting of one or more | |
| | of CURLSSH_AUTH_PUBLICKEY, | |
| | CURLSSH_AUTH_PASSWORD, | |
| | CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEY- | |
| | BOARD. Set to CURLSSH_AUTH_ANY to | |
| | let libcurl pick one. | |
| | | |
| | Added in cURL 7.16.1. | |
| | | |
| | | |
| CURLOPT_IPRESOLVE | | |
| | | |
| | Allows an application to select | |
| | what kind of IP addresses to use | |
| | when resolving host names. This is | |
| | only interesting when using host | |
| | names that resolve addresses using | |
| | more than one version of IP, possi- | |
| | ble values are CURL_IPRESOLVE_WHAT- | |
| | EVER, CURL_IPRESOLVE_V4, CURL_IPRE- | |
| | SOLVE_V6, by default CURL_IPRE- | |
| | SOLVE_WHATEVER. | |
| | | |
| | Added in cURL 7.10.8. | |
| | | |
+-----------------------------+--------------------------------------+---+
$value should be a string for the following values of the $option parameter:
+--------------------------------+------------------------------------------+---+
| Option | | |
| | | |
| | Set $value to | |
| | | |
| | Notes | |
| | | |
+--------------------------------+------------------------------------------+---+
| | | |
| 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 CUR- | |
| | LOPT_SSL_VERIFYPEER. | |
| | | |
| | Requires absolute path. | |
| | | |
| | | |
| CURLOPT_CAPATH | | |
| | | |
| | A directory that holds multiple CA | |
| | certificates. Use this option along- | |
| | side 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 fol- | |
| | lowed 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_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", "CON- | |
| | NECT" and so on; i.e. Do not enter a | |
| | whole HTTP request line here. For | |
| | instance, entering "GET /index.html | |
| | HTTP/1.0
" would be incor- | |
| | rect. | |
| | | |
| | Note | |
| | | |
| | | |
| | Don't do this | |
| | without making | |
| | sure the server | |
| | supports the | |
| | custom request | |
| | method first. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_EGDSOCKET | | |
| | | |
| | Like CURLOPT_RANDOM_FILE, except a | |
| | filename to an Entropy Gathering | |
| | Daemon socket. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_ENCODING | | |
| | | |
| | The contents of the "Accept-Encod- | |
| | ing: " header. This enables decoding | |
| | of the response. Supported encodings | |
| | are "identity", "deflate", and | |
| | "gzip". If an empty string, "", is | |
| | set, a header containing all sup- | |
| | ported 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_PRI- | |
| | VATE_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 power- | |
| | ful) 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_POSTFIELDS | | |
| | | |
| | | |
| | | |
| | The full data to post | |
| | in a HTTP "POST" oper- | |
| | ation. To post a file, | |
| | prepend a filename | |
| | with @ and use the | |
| | full path. The file- | |
| | type can be explicitly | |
| | specified by following | |
| | the filename with the | |
| | type in the format ' | |
| | ;type=mimetype'. This | |
| | parameter can either | |
| | be passed as a urlen- | |
| | coded string like ' | |
| | para1=val1¶2=val2&...' | |
| | or as an array with | |
| | the field name as key | |
| | and field data as | |
| | value. If $value is an | |
| | array, the Content- | |
| | Type header will be | |
| | set to multipart/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 CUR- | |
| | LOPT_SAFE_UPLOAD | |
| | option to TRUE. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_PROXY | | |
| | | |
| | The HTTP proxy to tunnel requests | |
| | through. | |
| | | |
| | | |
| | | |
| | | |
| 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 ran- | |
| | dom 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_SSH_HOST_PUBLIC_KEY_MD5 | | |
| | | |
| | A string containing 32 hexadecimal dig- | |
| | its. The string should be the MD5 check- | |
| | sum 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 trans- | |
| | fers. | |
| | | |
| | 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 envi- | |
| | ronment 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 environ- | |
| | ment 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 CUR- | |
| | LOPT_SSLCERT certificate. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_SSLCERTTYPE | | |
| | | |
| | The format of the certificate. Sup- | |
| | ported formats are "PEM" (default), | |
| | "DER", and "ENG". | |
| | | |
| | Added in cURL 7.9.3. | |
| | | |
| | | |
| CURLOPT_SSLENGINE | | |
| | | |
| | The identifier for the crypto engine of | |
| | the private SSL key specified in CUR- | |
| | LOPT_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 CUR- | |
| | LOPT_SSLKEY. | |
| | | |
| | Note | |
| | | |
| | | |
| | Since this option | |
| | contains a sensi- | |
| | tive 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_URL | | |
| | | |
| | The URL to fetch. This can also be set | |
| | when initializing a session with | |
| | curl_init(3). | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_USERAGENT | | |
| | | |
| | The contents of the "User-Agent: " | |
| | header to be used in a HTTP request. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_USERPWD | | |
| | | |
| | A username and password formatted as | |
| | "[username]:[password]" to use for the | |
| | connection. | |
| | | |
| | | |
| | | |
+--------------------------------+------------------------------------------+---+
$value should be an array for the following values of the $option parameter:
+-----------------------+--------------------------------------+---+
| Option | | |
| | | |
| | Set $value to | |
| | | |
| | Notes | |
| | | |
+-----------------------+--------------------------------------+---+
| | | |
|CURLOPT_HTTP200ALIASES | | |
| | | |
| | An array of HTTP 200 responses that | |
| | will be treated as valid responses | |
| | and not as errors. | |
| | | |
| | Added in cURL 7.10.3. | |
| | | |
| | | |
| CURLOPT_HTTPHEADER | | |
| | | |
| | An array of HTTP header fields to | |
| | set, in the format array('Content- | |
| | type: text/plain', 'Content-length: | |
| | 100') | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_POSTQUOTE | | |
| | | |
| | An array of FTP commands to execute | |
| | on the server after the FTP request | |
| | has been performed. | |
| | | |
| | | |
| | | |
| | | |
| CURLOPT_QUOTE | | |
| | | |
| | An array of FTP commands to execute | |
| | on the server prior to the FTP | |
| | request. | |
| | | |
| | | |
| | | |
+-----------------------+--------------------------------------+---+
$value should be a stream resource (using fopen(3), for example) for the following values of the $option parameter:
+--------------------+--------------------------------------+---+
| Option | | |
| | | |
| | Set $value to | |
| | | |
+--------------------+--------------------------------------+---+
| | | |
| CURLOPT_FILE | | |
| | | |
| | The file that the transfer should | |
| | be written to. The default is STDOUT | |
| | (the browser window). | |
| | | |
| | | |
| CURLOPT_INFILE | | |
| | | |
| | The file that the transfer should | |
| | be read from when uploading. | |
| | | |
| | | |
| CURLOPT_STDERR | | |
| | | |
| | An alternative location to output | |
| | errors to instead of STDERR. | |
| | | |
| | | |
|CURLOPT_WRITEHEADER | | |
| | | |
| | The file that the header part of | |
| | the transfer is written to. | |
| | | |
+--------------------+--------------------------------------+---+
$value should be the name of a valid function or a Closure for the following values of the $option parameter:
+-------------------------+--------------------------------------+---+
| Option | | |
| | | |
| | Set $value to | |
| | | |
+-------------------------+--------------------------------------+---+
| | | |
| CURLOPT_HEADERFUNCTION | | |
| | | |
| | A callback accepting two parame- | |
| | ters. The first is the cURL | |
| | resource, the second is a string | |
| | with the header data to be written. | |
| | The header data must be written by | |
| | this callback. Return the number of | |
| | bytes written. | |
| | | |
| | | |
| CURLOPT_PASSWDFUNCTION | | |
| | | |
| | A callback accepting three parame- | |
| | ters. The first is the cURL | |
| | resource, the second is a string | |
| | containing a password prompt, and | |
| | the third is the maximum password | |
| | length. Return the string containing | |
| | the password. | |
| | | |
| | | |
|CURLOPT_PROGRESSFUNCTION | | |
| | | |
| | A callback accepting five parame- | |
| | ters. The first is the cURL | |
| | resource, the second is the total | |
| | number of bytes expected to be down- | |
| | loaded in this transfer, the third | |
| | is the number of bytes downloaded so | |
| | far, the fourth is the total number | |
| | of bytes expected to be uploaded in | |
| | this transfer, and the fifth is the | |
| | number of bytes uploaded so far. | |
| | | |
| | Note | |
| | | |
| | | |
| | The callback | |
| | is only called | |
| | when the CUR- | |
| | LOPT_NOPROGRESS | |
| | option is set | |
| | to FALSE. | |
| | | |
| | Return a non-zero | |
| | value to abort the | |
| | transfer. In which | |
| | case, the transfer | |
| | will set a | |
| | CURLE_ABORTED_BY_CALL- | |
| | BACK error. | |
| | | |
| | | |
| CURLOPT_READFUNCTION | | |
| | | |
| | A callback accepting three parame- | |
| | ters. The first is the cURL | |
| | resource, the second is a stream | |
| | resource provided to cURL through | |
| | the option CURLOPT_INFILE, and the | |
| | third is the maximum amount of data | |
| | to be read. The callback must return | |
| | a string with a length equal or | |
| | smaller than the amount of data | |
| | requested, typically by reading it | |
| | from the passed stream resource. It | |
| | should return an empty string to | |
| | signal EOF. | |
| | | |
| | | |
| CURLOPT_WRITEFUNCTION | | |
| | | |
| | A callback accepting two parame- | |
| | ters. The first is the cURL | |
| | resource, and the second is a string | |
| | with the data to be written. The | |
| | data must be saved by this callback. | |
| | It must return the exact number of | |
| | bytes written or the transfer will | |
| | be aborted with an error. | |
| | | |
+-------------------------+--------------------------------------+---+
Other values:
+--------------+--------------------------------------+---+
| Option | | |
| | | |
| | Set $value to | |
| | | |
+--------------+--------------------------------------+---+
| | | |
|CURLOPT_SHARE | | |
| | | |
| | A result of curl_share_init(3). | |
| | Makes the cURL handle to use the | |
| | data from the shared handle. | |
| | | |
+--------------+--------------------------------------+---+
RETURN VALUES
Returns TRUE on success or FALSE on failure.
CHANGELOG
+--------+---------------------------------------------------+
|Version | |
| | |
| | Description |
| | |
+--------+---------------------------------------------------+
| 5.6.0 | |
| | |
| | |
| | CURL_SAFE_UPLOAD is now TRUE by default. |
| | |
| 5.6.0 | |
| | |
| | Removed CURLOPT_CLOSEPOLICY and associated val- |
| | ues. |
| | |
| 5.5.0 | |
| | |
| | Added the cURL resource as the first argument to |
| | the CURLOPT_PROGRESSFUNCTION callback. |
| | |
| 5.5.0 | |
| | |
| | Introduced CURLOPT_SHARE. |
| | |
| 5.3.0 | |
| | |
| | Introduced CURLOPT_PROGRESSFUNCTION. |
| | |
|5.2.10 | |
| | |
| | Introduced CURLOPT_PROTOCOLS, and CUR- |
| | LOPT_REDIR_PROTOCOLS. |
| | |
| 5.1.0 | |
| | |
| | Introduced CURLOPT_AUTOREFERER, CURLOPT_BINARY- |
| | TRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, |
| | and CURLOPT_TIMECONDITION. |
| | |
| 5.0.0 | |
| | |
| | Introduced CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIG- |
| | NAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFER- |
| | SIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CUR- |
| | LOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CUR- |
| | LOPT_HTTP200ALIASES. |
| | |
+--------+---------------------------------------------------+
EXAMPLES
Example #1
Initializing a new cURL session and fetching a web page
<?php
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
?>
Example #2
Uploading file
<?php
/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/
$ch = curl_init();
$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
The above example will output:
Array
(
[name] => Foo
)
Array
(
[file] => Array
(
[name] => test.png
[type] => image/png
[tmp_name] => /tmp/phpcpjNeQ
[error] => 0
[size] => 279
)
)
NOTES
Note
Passing an array to CURLOPT_POSTFIELDS will encode the data as multipart/form-data, while passing a URL-encoded string will encode
the data as application/x-www-form-urlencoded.
SEE ALSO
curl_setopt_array(3).
PHP Documentation Group CURL_SETOPT(3)