Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

curl_setopt(3) [php man page]

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&para2=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)
Man Page