Funciones de cURL
PHP Manual

curl_setopt

(PHP 4 >= 4.0.2, PHP 5)

curl_setoptConfigura una opción para una transferencia cURL

Descripción

bool curl_setopt ( resource $ch , int $option , mixed $value )

Establece una opción en la sesión del recurso cURL.

Parámetros

ch

El recurso cURL devuelto por curl_init().

option

La opción CURLOPT_XXX a configurar.

value

Valor a configurar en la option.

value debe ser un bool para los siguientes valores del parámetro option:

Opción Establecer value a Notas
CURLOPT_AUTOREFERER TRUE para automáticamente establecer el valor del campo Referer: en peticiones que siguen una redireción Location:.
CURLOPT_BINARYTRANSFER TRUE para devolver el resultado sin tratar CURLOPT_RETURNTRANSFER está activado. Desde PHP 5.1.3, esta opción no tiene efecto: el resultado sin tratar será siempre retornado cuando CURLOPT_RETURNTRANSFER sea usado.
CURLOPT_COOKIESESSION TRUE para usarse como una nueva cookie de "sesión". Forzará libcurl a ignorar todas las cookies, se trata de cargar estas "cookies de sesión" de la sesión anterior. Por defecto, libcurl siempre guarda y carga todas las cookies, independientemente si hay cookies de sesión o no. Las cookies de sesión son cookies sin fecha de caducidad y estan pensadas para mantenerse activas y solo existir para esta "sesión".
CURLOPT_CERTINFO TRUE para mostrar información sobre certificación SSL al STDERR en transferencias seguras. Añadido en cURL 7.19.1 Disponible desde PHP 5.3.2. Requiere CURLOPT_VERBOSE activado para que tenga efecto.
CURLOPT_CONNECT_ONLY TRUE le dice a la biblioteca que realice todas las autenticaciones de proxy requeridas y la configuración de la conexión, pero no la transferencia de datos. Esta opción se implementa para HTTP, SMTP y POP3. Aladida en 7.15.2. Disponbible desde PHP 5.5.0.
CURLOPT_CRLF TRUE para convertir nuevas líneas Unix a nuevas líneas CRLF en transferencias.
CURLOPT_DNS_USE_GLOBAL_CACHE TRUE para usar caché DNS global. Esta opción no es thread-safe y está activada por defecto.
CURLOPT_FAILONERROR TRUE para fallar con verbosidad si el código HTTP devuelto es mayor o igual que 400. El comportamiento por defecto es devolver la página normalmente, ignornado el código.
CURLOPT_FILETIME TRUE para intentar obtener la fecha de modificación del documento. Este valor puede obtenerse usando la opción CURLINFO_FILETIME con curl_getinfo().
CURLOPT_FOLLOWLOCATION TRUE para seguir cualquier encabezado "Location: " que el servidor envíe como parte del encabezado HTTP (observe la recursividad, PHP seguirá tantos header "Location: " como se envíen, a no ser que la opción CURLOPT_MAXREDIRS esté establecida).
CURLOPT_FORBID_REUSE TRUE para forzar a cerrar explicitamente la conexión cuando se finalice el proceso y no guardarla para su reuso.
CURLOPT_FRESH_CONNECT TRUE para forzar el uso de una nueva conexión en lugar de usar una en caché.
CURLOPT_FTP_USE_EPRT TRUE para usar EPRT (y LPRT) cuando se hacen descargas FTP activas. Use FALSE para desactivar EPRT y LPRT y usar PORT solamente.
CURLOPT_FTP_USE_EPSV TRUE para probar primero el comando EPSV para transferencias FTP antes de volver a PASV. Establezca la opción a FALSE para desactivar EPSV.
CURLOPT_FTP_CREATE_MISSING_DIRS TRUE para crear directorios faltantes cuando una operación se encuentra con una ruta que actualmente no existe.
CURLOPT_FTPAPPEND TRUE para añadir al fichero remoto en lugar de sobreescribirlo.
CURLOPT_FTPASCII Un alias de CURLOPT_TRANSFERTEXT. Para usar en su lugar.
CURLOPT_FTPLISTONLY TRUE para solo listar los nombres de un directorio FTP directorio.
CURLOPT_HEADER TRUE para incluir el header en el output.
CURLINFO_HEADER_OUT TRUE para seguir la cadena de la petición del recurso. Disponible desde PHP 5.1.3. El prefijo CURLINFO_ es intencionado.
CURLOPT_HTTPGET TRUE para resetear la petición HTTP a GET. Puesto que GET es el método por defecto, solo es necesario si el método fue cambiado.
CURLOPT_HTTPPROXYTUNNEL TRUE para usar un tunel a través de un proxy HTTP.
CURLOPT_MUTE TRUE para completar silenciosamente en lo que se refiere a las funciones cURL. Eliminado en cURL 7.15.5 (Se puede usar CURLOPT_RETURNTRANSFER en su lugar)
CURLOPT_NETRC TRUE para escanear el fichero ~/.netrc y buscar un usuario y contraseña para establecer una conexión con el sitio remoto.
CURLOPT_NOBODY TRUE para excluir el body del output. El método de petición es establecido a HEAD. Si se cambia a FALSE no cambia el método a GET.
CURLOPT_NOPROGRESS

TRUE para desactivar medidor de progreso para transferencias cURL.

Nota:

PHP automáticamente establece esta opción a TRUE, solo debería cambiarse para razones de testing.

CURLOPT_NOSIGNAL TRUE para ignorar cualquier función cURL que cause una señal a ser enviada al proceso PHP. Esta opción está activada por defecto en multi-hilo SAPI, entonces las opciones de timeout pueden ser usadas. Añadido en cURL 7.10.
CURLOPT_POST TRUE para hacer un HTTP POST normal. Este POST del tipo application/x-www-form-urlencoded, el más común en formularios HTML.
CURLOPT_PUT TRUE para hacer un HTTP PUT de un fichero. El fichero a subir debe establecerse en CURLOPT_INFILE y CURLOPT_INFILESIZE.
CURLOPT_RETURNTRANSFER TRUE para devolver el resultado de la transferencia como string del valor de curl_exec() en lugar de mostrarlo directamente.
CURLOPT_SSL_VERIFYPEER FALSE para que cURL no verifique el peer del certificado. Para usar diferentes certificados para la verificación se pueden especificar con la opción CURLOPT_CAINFO o se puede especificar el directorio donde se encuentra el certificado con la opción CURLOPT_CAPATH. TRUE por omisión desde cURL 7.10. Paquete instalado por defecto en la versión CURL 7.10.
CURLOPT_TRANSFERTEXT TRUE para usar modo ASCII para transferencias FTP. En LDAP, obtiene los datos en texto plano en lugar de HTML. En sistemas Windows, no estabecerá STDOUT en modo binario.
CURLOPT_UNRESTRICTED_AUTH TRUE para prevenir el envio de usuario y contraseña cuando se siguen locations (usando CURLOPT_FOLLOWLOCATION), incluso cuando el hostname es diferente.
CURLOPT_UPLOAD TRUE preparar cURL para subir un fichero.
CURLOPT_VERBOSE TRUE para mostrar información verbose. Escribe la salida en STDERR, o el fichero especificado usando CURLOPT_STDERR.

value debe ser un integer para los siguientes valores del parámetro option:

Opción Establecer value a Notas
CURLOPT_BUFFERSIZE Tamaño del búfer a usar por cada lectura. De todas formas, no hay ninguna garantía de que la petición usará todo el búfer. Añadido en cURL 7.10.
CURLOPT_CLOSEPOLICY Tanto CURLCLOSEPOLICY_LEAST_RECENTLY_USED como CURLCLOSEPOLICY_OLDEST. Hay otras tres constantes CURLCLOSEPOLICY_, pero cURL no lo soporta todavía.
CURLOPT_CONNECTTIMEOUT Número de segundos a esperar cuando se está intentado conectar. Use 0 para esperar indefinidamente.
CURLOPT_CONNECTTIMEOUT_MS Número de milisegundos a esperar cuando se está intentado conectar. Use 0 para esperar indefinidamente. Si se ha compilado libcurl para utilizar el sistema estándar de resolución de nombres, esta porción de conexión utilizará una resolución completa de un segundo en tiempos de expiración, con un mínimo permitido de un segundo. Añadido en cURL 7.16.2. Disponible desde PHP 5.2.3.
CURLOPT_DNS_CACHE_TIMEOUT Número de segundos a mantener las entradas DNS en memoria. Esta opción está establecida a 120 (2 minutos) por defecto.
CURLOPT_FTPSSLAUTH Método de autenticación FTP (cuando está activado): CURLFTPAUTH_SSL (prueba SSL primero), CURLFTPAUTH_TLS (prueba TLS primero), o CURLFTPAUTH_DEFAULT (hacer que cURL decida). Añadido en cURL 7.12.2.
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (por defecto, hacer que CURL decida que versión a usar), CURL_HTTP_VERSION_1_0 (fuerza HTTP/1.0), or CURL_HTTP_VERSION_1_1 (fuerza HTTP/1.1).
CURLOPT_HTTPAUTH

Los métodos de autenticación HTTP. Las opciones son: CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY, y CURLAUTH_ANYSAFE.

El separador | o operador puede ser usado para combinar más de un método. Si se utiliza, cURL comprobará en el servidor remoto que métodos soporta y utilizará el más adecuado.

CURLAUTH_ANY es un alias para CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE es un alias para CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLOPT_INFILESIZE El tamaño esperado en bytes, del fichero cuando se está subiendo un fichero al sitio remoto. Téngase en cuenta que el uso de esta opción no detendrá libcurl a la hora de enviar más datos, exactamente lo que se envía depende de CURLOPT_READFUNCTION.
CURLOPT_LOW_SPEED_LIMIT La velocidad de transferencia, en bytes por segundo, que la transferencia debería estar por debajo durante CURLOPT_LOW_SPEED_TIME segundos para PHP a considerar que la transferencia es demasiado lenta y debe abortarse.
CURLOPT_LOW_SPEED_TIME Número en segundos en que la velocidad de transferencia debería estar debajo de CURLOPT_LOW_SPEED_LIMIT antes que PHP considere que la transferencia es demasiado lenta y debe abortarse.
CURLOPT_MAXCONNECTS Número máximo de conexiones persistentes que están permitidas. Cuando se llega al límite, se utiliza CURLOPT_CLOSEPOLICY para determinar que conexión debe cerrarse.
CURLOPT_MAXREDIRS Número máximo de redirecciones HTTP a seguir. Use esta opción con CURLOPT_FOLLOWLOCATION.
CURLOPT_PORT Puerto alternativo a conectarse.
CURLOPT_PROTOCOLS

Máscara de los valores CURLPROTO_*. Si se utiliza, esta máscara limitará que protocolos utilizará libcurl en transferencias. Permite que libcurl utilice cualquiera de los protocolos pero limita que grupo de protocolos a usar en específicas transferencias. Por defecto libcurl acepta todos los protocolos. Vea también: CURLOPT_REDIR_PROTOCOLS.

Las opciones para válidos procolos son: 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

Añadido en cURL 7.19.4.
CURLOPT_PROXYAUTH Método de autenticación HTTP para usar conexiones vía proxy. Usa el mismo tipo de máscaras descritas en CURLOPT_HTTPAUTH. Para autenticación proxy, solamente CURLAUTH_BASIC y CURLAUTH_NTLM están actualmente soportadas. Añadido en cURL 7.10.7.
CURLOPT_PROXYPORT Número del puerto para usar en la conexión proxy. Este puerto también puede configurase en CURLOPT_PROXY.
CURLOPT_PROXYTYPE Puede ser CURLPROXY_HTTP (por defecto) o bien CURLPROXY_SOCKS5. Añadido en cURL 7.10.
CURLOPT_REDIR_PROTOCOLS Máscara de valores CURLPROTO_*. Si se usa, esta máscara limitará que protocolos usará libcurl en una transferencia que sigue una redireción cuando CURLOPT_FOLLOWLOCATION está activado. Esto permite limitar a específicas transferencias que grupo de protocolos utilizar en redireciones. Por defecto libcurl aceptará todos los protocolos excepto FILE y SCP. Esto es nuevo si se compara con versiones anteriores a 7.19.4 donde se seguían incodicionalmente todos los protocolos soportados. Vea también CURLOPT_PROTOCOLS para los valores de las constantes. Añadido en cURL 7.19.4.
CURLOPT_RESUME_FROM El punto, en bytes desde donde continuar una transferencia.
CURLOPT_SSL_VERIFYHOST 1 para comprobar que existe un nombre común en el peer del certificado SSL. 2 para comprobar que existe un nombre común y también para verificar que el hostname coinicide con el proporcionado. En entornos de producción el valor de esta opción debe mantenerse a 2 (valor por omisión). Soporte para el valor 1 eliminado en cURL 7.28.1
CURLOPT_SSLVERSION Versión SSL a usar (2 o 3). Por defecto PHP intentará determinarlo por si mismo, de todos modos en algunos casos debe asignarse manualmente.
CURLOPT_TIMECONDITION Como se trata CURLOPT_TIMEVALUE. Utilice CURL_TIMECOND_IFMODSINCE para devolver la página solamente si fue modificada desde el tiempo especificado en CURLOPT_TIMEVALUE. Si no fué modificada, se devolverá "304 Not Modified" en el header asumiendo que CURLOPT_HEADER es TRUE. Utilice CURL_TIMECOND_IFUNMODSINCE para el efecto contrario. CURL_TIMECOND_IFMODSINCE está activado por defecto.
CURLOPT_TIMEOUT Número máximo de segundos permitido para ejectuar funciones cURL.
CURLOPT_TIMEOUT_MS Número máximo en milisegundos permitido para ejecutar funciones cURL. Si se ha compilado libcurl para utilizar el sistema estándar de resolución de nombres, esta porción de conexión utilizará una resolución completa de un segundo en tiempos de expiración, con un mínimo permitido de un segundo. Añadido en cURL 7.16.2. Disponible desde PHP 5.2.3.
CURLOPT_TIMEVALUE Tiempo en segundos desde el 1 de enero de 1970. El tiempo será usado por CURLOPT_TIMECONDITION. Por defecto, se utiliza CURL_TIMECOND_IFMODSINCE.
CURLOPT_MAX_RECV_SPEED_LARGE Si una descarga supera esta velocidad (en bytes por segundo) en su tasa media de transferencia, ésta se detendrá temporalmente para mantener la media igual o inferior al valor del parámetro. Por omisión, la velocidad es ilimitada. Añadido en cURL 7.15.5. Disponible desde PHP 5.4.0.
CURLOPT_MAX_SEND_SPEED_LARGE Si una subida supera esta velocidad (en bytes por segundo) en su tasa media de transferencia, ésta se detendrá temporalmente para mantener la media igual o inferior al valor del parámetro. Por omisión, la velocidad es ilimitada. Añadido en cURL 7.15.5. Disponible desde PHP 5.4.0.
CURLOPT_SSH_AUTH_TYPES Una máscara de bits que consta de una o más de CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD. Establece a CURLSSH_AUTH_ANY para que libcurl elija uno. Añadido en cURL 7.16.1.
CURLOPT_IPRESOLVE Permite a una aplicación seleccionar el tipo de dirección IP a usar cuando se resuelven nombres de host. Esto es interesante solamente al usar nombres de host que resuelven direcciones usando más de una versión de IP. Los valores posibles son CURL_IPRESOLVE_WHATEVER, CURL_IPRESOLVE_V4, CURL_IPRESOLVE_V6; el predeterminado es CURL_IPRESOLVE_WHATEVER. Añadida en cURL 7.10.8.

El value debe ser una string para los siguientes valores del parámetro option:

Opción Configurar value a Notas
CURLOPT_CAINFO Nombre del fichero que contiene uno o más certificados para verificar el peer. Solo tiene sentido cuando se utiliza en combinación de CURLOPT_SSL_VERIFYPEER. Deben usarse rutas absolutas.
CURLOPT_CAPATH Directorio que contiene múltiple certificados CA. Utilice esta opción junto con CURLOPT_SSL_VERIFYPEER.
CURLOPT_COOKIE Contenido de "Cookie: " del header para ser usado en la petición HTTP. Observe que múltiples cookies van separadas con punto y coma seguidas por un espacio (ej., "fruit=apple; colour=red")
CURLOPT_COOKIEFILE Nombre del fichero que contiene datos de las cookies. El fichero de cookies puede estar en formato Netscape, o simplemente tipo HTTP plano dentro de un fichero. Si el nombre es una cadena vacía, no se cargarán cookies, aunque el manejo de cookies aún está habilitado.
CURLOPT_COOKIEJAR Nombre del fichero donde guardar cookies internas cuando se cierra se cierra, por e.j. después de llamar a curl_close.
CURLOPT_CUSTOMREQUEST

Método de petición personalizado a usar en lugar de "GET" o "HEAD" cuando se realiza una petición HTTP. Es útil para hacer "DELETE" o otros tipos de peticiones HTTP menos comunes. "GET", "POST", "CONNECT" y otros, son valores válidos. Ej. No introduzca toda la petición HTTP aquí, seria incorrecto introducir: "GET /index.html HTTP/1.0\r\n\r\n".

Nota:

No cambie este valor sin antes asegurarse que el servidor soporta el método de petición personalizado.

CURLOPT_EGDSOCKET Es como CURLOPT_RANDOM_FILE, con excepción que en lugar de un fichero se utiliza un Entropy Gathering Daemon socket.
CURLOPT_ENCODING Contenido del valor "Accept-Encoding: " en el header. Esto permite decodificar la respuesta. Los formatos de codificación disponibles son "identity", "deflate", y "gzip". Si el valor se envía vacío, "", se enviarán todos los tipos de condificación soportados. Añadido en cURL 7.10.
CURLOPT_FTPPORT El valor que será usando para obtener la dirección IP a usar para la instrucción FTP "PORT". La instrucción "PORT" dice al servidor remoto a qué dirección IP se debe conectar. La cadena puede ser una dirección IP, el nombre de un servidor o un interfaz de red (bajo Unix), o simplemente '-' para usar la dirección IP por defecto del sistema.
CURLOPT_INTERFACE Nombre del interfaz de salida a usar. Puede ser el nombre del interfaz, una dirección IP o el nombre de un servidor.
CURLOPT_KEYPASSWD El password requerido para usar la clave privada CURLOPT_SSLKEY o CURLOPT_SSH_PRIVATE_KEYFILE. Añadido en cURL 7.16.1.
CURLOPT_KRB4LEVEL Nivel de seguridad KRB4 (Kerberos 4). Cualquiera de los siguientes valores (en orden de menos a más potentes) son válidos: "clear", "safe", "confidential", "private".. Si la cadena no coincide con alguno de estos valores, será usado "private". Configure esta opción a NULL para desactivar seguridad KRB4. Actualmente la seguridad KRB4 solo funciona con transaciones FTP.
CURLOPT_POSTFIELDS Todos los datos para enviar vía HTTP "POST". para enviar un fichero, prefija el nombre del fichero con @ y utiliza la ruta completa. Se puede especificar explícitamente el tipo de fichero añadiendo el tipo al nombre del fichero, en el formato ';type=mimetype'. Se puede enviar una cadena urlencoded como 'para1=val1&para2=val2&...' o también como un array con el nombre del campo como key y los datos como value. Si value es un array, el encabezado Content-Type será definido como multipart/form-data. A partir de PHP 5.2.0, value debe ser un array si los archivos son pasados a esta opción con el prefijo @. A partir de PHP 5.5.0, el prefijo @ está obsoleto, por lo que los ficheros se pueden enviar usando CURLFile.
CURLOPT_PROXY El proxy HTTP para enviar peticiones a través de tunel.
CURLOPT_PROXYUSERPWD Usuario y contraseña con el siguiente formato "[username]:[password]" para usarse en la conexión al proxy.
CURLOPT_RANDOM_FILE Nombre del fichero a ser usado para generar números aleatorios para el SSL.
CURLOPT_RANGE Rango(s) de datos para obtener en el formato "X-Y" donde X y Y son opcionales. Transferencias HTTP también soportan varios intérvalos, separados por comas en el formato "X-Y,N-M".
CURLOPT_REFERER Contenido del Header "Referer: " para ser usado en la petición HTTP.
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 Un string que contiene 32 dígitos hexadecimales. El string debe ser el MD5 checksum de la clave pública del host remoto, y libcurl rechazará la conexión a el host a menos que el md5sums coincida. Esta opción es sólo para las transferencias SCP y SFTP. Añadido en cURL 7.17.1.
CURLOPT_SSH_PUBLIC_KEYFILE El nombre de el fichero de la clave pública. Si no se utiliza, libcurl por omisión usa $HOME/.ssh/id_dsa.pub si la variable de entorno HOME es establecida, y "id_dsa.pub" en el directorio actual si HOME no está establecida. Añadido en cURL 7.16.1.
CURLOPT_SSH_PRIVATE_KEYFILE El nombre de el fichero de la clave privada. Si no se utiliza, libcurl por omisión usa $HOME/.ssh/id_dsa si la variable de entorno HOME es establecida, y "id_dsa" en el directorio actual si HOME no está establecida. Si el fichero está protegido con contraseña, establecer la contraseña con la constante CURLOPT_KEYPASSWD. Añadido en cURL 7.16.1.
CURLOPT_SSL_CIPHER_LIST Lista de ciphers a ser usados por SSL. Por ejemplo, RC4-SHA y TLSv1 es una lista válida de ciphers.
CURLOPT_SSLCERT Nombre del fichero que contiene un certificado con formato PEM.
CURLOPT_SSLCERTPASSWD Contraseña requerida para usar el certificado CURLOPT_SSLCERT.
CURLOPT_SSLCERTTYPE Formato del certificado. Los formatos soportados son "PEM" (por defecto), "DER", y "ENG". Añadido en cURL 7.9.3.
CURLOPT_SSLENGINE El identificador para el crypto engine de la clave privada SSL especificada en CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT Identificador para el crypto engine usado para operaciones crypto asimétricas.
CURLOPT_SSLKEY Nombre del fichero que contiene la clave privada SSL.
CURLOPT_SSLKEYPASSWD

Contraseña secreta requerida para usar la clave privada SSL especificada en CURLOPT_SSLKEY.

Nota:

Como esta opción contiene una contraseña, recuerde mantener el PHP script en un sitio seguro.

CURLOPT_SSLKEYTYPE Tipo de llave privada SSL especificada en CURLOPT_SSLKEY. Los tipos de claves soportadas son "PEM" (default), "DER", y "ENG".
CURLOPT_URL Dirección URL a capturar. Este valor también puede ser configurado cuando se inicia una sesión con curl_init().
CURLOPT_USERAGENT Contenido del header "User-Agent: " a ser usado en la petición HTTP.
CURLOPT_USERPWD Nombre de usuario y contraseña siguiendo el formato "[username]:[password]" para ser usado en la conexión.

El value debe ser un array para los siguientes calores del parámetro option:

Opción Configurar value a Notas
CURLOPT_HTTP200ALIASES Array de respuestas HTTP 200 que serán tratadas como respuestas válidas y no como errores. Añadido en cURL 7.10.3.
CURLOPT_HTTPHEADER Un array de campos a configurar para el header HTTP, en el formato: array('Content-type: text/plain', 'Content-length: 100')
CURLOPT_POSTQUOTE Un array de comandos FTP a ejecutar en el servidor después de que se realice la petición FTP.
CURLOPT_QUOTE Un array de comandos FTP a ejecutar en el servidor antes de que se realice la petición FTP.

El value debe ser un recurso de flujo (usando fopen(), por ejemplo) para los siguientes valores del parámetro option:

Opción Configurar value a
CURLOPT_FILE El fichero en el que el proceso de transferencia guardará el resultado. Por defecto es STDOUT (la ventana del navegador).
CURLOPT_INFILE El fichero que el proceso de transferencia debe leer a la hora de subir un fichero.
CURLOPT_STDERR Localización alternativa para mostrar los errores en lugar de STDERR.
CURLOPT_WRITEHEADER El fichero donde guardar la parte del header durante la transferencia.

value debería ser el nombre de una función válida o una Clausura para los siguientes valores del parámetro option:

Opción Configurar value a
CURLOPT_HEADERFUNCTION Una llamada de retorno que acepta dos parámetros. El primero es el recurso cURL, el segundo es un string con los datos de la cabecera a escribir. Los datos de la cabecera deben escribirse durante esta llamada de retorno. Devuelve el número de bytes escritos.
CURLOPT_PASSWDFUNCTION Una llamada de retorno que acepta tres parámetros. El primero es el recurso cURL, el segundo es un string que contiene la contraseña, y el tercero es la longitud máxima para la contraseña. Devuelve un string que contiene la contraseña.
CURLOPT_PROGRESSFUNCTION

Una llamada de retorno que acepta cinco parámetros. El primero es el recurso cURL, el segundo es el número total de bytes que se espera descargar en esta transferencia, el tercero es el número de bytes descargados hasta ahora, el cuarto es el número total de bytes que se espera subir en esta transferencia, y el quinto es el número de bytes subidos hasta ahora.

Nota:

La llamada de retorno solamente se invoca cuando la opción CURLOPT_NOPROGRESS está establecida a FALSE.

Devuelve un valor distinto de cero para abortar la transferencia. En este caso, la transferencia establecerá un error CURLE_ABORTED_BY_CALLBACK.

CURLOPT_READFUNCTION Una llamada de retorno que acepta tres parámetros. El primero es el recurso cURL, el segundo es un recurso de flujo de datos proporcionado a través de la opción CURLOPT_INFILE, y el tercero es la máxima cantidad de datos a leer. La llamada de retorno debe devolver un string con la misma longitud o menor que la cantidad de datos pedidos, normalmente leyéndolos del recurso de flujo de datos pasado. Debe devolver una cadena vacía para marcar el EOF.
CURLOPT_WRITEFUNCTION Una llamada de retorno que acepta dos parámetros. El primero es el recurso cURL, el segundo es un string con los datos a escribir. Los datos deben ser guardados por esta llamada de retorno. Debe devolver el número exacto de bytes escritos o la transferencia será abortada con un error.

Otros valores:

Opción Establecer value a
CURLOPT_SHARE Un resultado de curl_share_init(). Hace que el gestor de cURL use los datos del gestor compartido.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Historial de cambios

Versión Descripción
5.5.0 Se añadió el recurso cURL como el primer parámetro de la llamada de retorno CURLOPT_PROGRESSFUNCTION.
5.5.0 Se introdujo CURLOPT_SHARE.
5.3.0 Se introdujo CURLOPT_PROGRESSFUNCTION.
5.2.10 Se introdujo CURLOPT_PROTOCOLS, y CURLOPT_REDIR_PROTOCOLS.
5.1.0 Se introdujo CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, y CURLOPT_TIMECONDITION.
5.0.0 Se introdujo CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, y CURLOPT_HTTP200ALIASES.

Ejemplos

Ejemplo #1 Iniciando una nueva sesión cURL y capturando la página web

<?php
// Crear un nuevo recurso cURL
$ch curl_init();

// Configurar URL y otras opciones apropiadas
curl_setopt($chCURLOPT_URL"http://www.example.com/");
curl_setopt($chCURLOPT_HEADERfalse);

// Capturar la URL y pasarla al navegador
curl_exec($ch);

// Cerrar el recurso cURL y liberar recursos del sistema
curl_close($ch);
?>

Ejemplo #2 Subiendo un fichero

<?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($chCURLOPT_URL'http://localhost/upload.php');
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$data);

curl_exec($ch);
?>

El resultado del ejemplo sería:

Array
(
    [name] => Foo
)
Array
(
    [file] => Array
        (
            [name] => test.png
            [type] => image/png
            [tmp_name] => /tmp/phpcpjNeQ
            [error] => 0
            [size] => 279
        )

)

Notas

Nota:

Si pasamos un array a CURLOPT_POSTFIELDS codificará los datos como multipart/form-data, pero si pasamos una cadena URL-encoded codificará los datos como application/x-www-form-urlencoded.

Ver también


Funciones de cURL
PHP Manual