(PHP 4 >= 4.0.2, PHP 5, PHP 7)
curl_setopt — Configura una opción para una transferencia cURL
Establece una opción en la sesión del recurso cURL.
ch
El recurso cURL devuelto por curl_init().
optionLa 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 valuea | Notas | 
|---|---|---|
| CURLOPT_AUTOREFERER | TRUEpara automáticamente establecer el valor del campo Referer:
            en peticiones que siguen una redireción Location:. | |
| CURLOPT_BINARYTRANSFER | TRUEpara devolver el resultado sin tratarCURLOPT_RETURNTRANSFERestá activado. | Desde PHP 5.1.3, esta opción no tiene efecto: el resultado sin tratar será
            siempre retornado cuando CURLOPT_RETURNTRANSFERsea usado. | 
| CURLOPT_COOKIESESSION | TRUEpara 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 | TRUEpara 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_VERBOSEactivado para que tenga efecto. | 
| CURLOPT_CONNECT_ONLY | TRUEle 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 | TRUEpara convertir nuevas líneas Unix a nuevas líneas CRLF
            en transferencias. | |
| CURLOPT_DNS_USE_GLOBAL_CACHE | TRUEpara usar caché DNS global. Esta opción no es
            thread-safe y está activada por defecto. | |
| CURLOPT_FAILONERROR | TRUEpara 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_SSL_FALSESTART | TRUEpara habilitar el inicio falso de TLS. | Añadida en cURL 7.42.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_FILETIME | TRUEpara intentar obtener la fecha de modificación del
            documento. Este valor puede obtenerse usando la opciónCURLINFO_FILETIMEcon
            curl_getinfo(). | |
| CURLOPT_FOLLOWLOCATION | TRUEpara 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ónCURLOPT_MAXREDIRSesté establecida). | |
| CURLOPT_FORBID_REUSE | TRUEpara forzar a cerrar explicitamente la conexión cuando
            se finalice el proceso y no guardarla para su reuso. | |
| CURLOPT_FRESH_CONNECT | TRUEpara forzar el uso de una nueva conexión en lugar
            de usar una en caché. | |
| CURLOPT_FTP_USE_EPRT | TRUEpara usar EPRT (y LPRT) cuando se hacen descargas FTP
            activas. UseFALSEpara desactivar EPRT y LPRT y usar
            PORT solamente. | |
| CURLOPT_FTP_USE_EPSV | TRUEpara probar primero el comando EPSV para transferencias
            FTP antes de volver a PASV. Establezca la opción aFALSEpara desactivar EPSV. | |
| CURLOPT_FTP_CREATE_MISSING_DIRS | TRUEpara crear directorios faltantes cuando una operación 
            se encuentra con una ruta que actualmente no existe. | |
| CURLOPT_FTPAPPEND | TRUEpara añadir al fichero remoto en lugar de
            sobreescribirlo. | |
| CURLOPT_TCP_NODELAY | TRUEpara deshabilitar el algoritmo de TCP de Nagle, el cual intenta minimizar
            el número de paquetes pequeños en la red. | Disponible desde PHP 5.2.1 para versiones compiladas con libcurl 7.11.2 o superior. | 
| CURLOPT_FTPASCII | Un alias de CURLOPT_TRANSFERTEXT. Para usar en su lugar. | |
| CURLOPT_FTPLISTONLY | TRUEpara solo listar los nombres de un directorio FTP
            directorio. | |
| CURLOPT_HEADER | TRUEpara incluir el header en el output. | |
| CURLINFO_HEADER_OUT | TRUEpara seguir la cadena de la petición del recurso. | Disponible desde PHP 5.1.3. El prefijo CURLINFO_es intencionado. | 
| CURLOPT_HTTPGET | TRUEpara 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 | TRUEpara usar un tunel a través de un proxy HTTP. | |
| CURLOPT_MUTE | TRUEpara 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 | TRUEpara escanear el fichero ~/.netrc
            y buscar un usuario y contraseña para establecer una conexión
            con el sitio remoto. | |
| CURLOPT_NOBODY | TRUEpara excluir el body del output.
            El método de petición es establecido a HEAD. Si se cambia aFALSEno cambia el método a GET. | |
| CURLOPT_NOPROGRESS | 
             
 | |
| CURLOPT_NOSIGNAL | TRUEpara 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_PATH_AS_IS | TRUEpara no manejar secuencias de puntos. | Añadida en cURL 7.42.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_PIPEWAIT | TRUEpara esperar por 'pipelining'/multiplexación. | Añadida en cURL 7.43.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_POST | TRUEpara hacer un HTTP POST normal. Este POST del tipo
            application/x-www-form-urlencoded,
            el más común en formularios HTML. | |
| CURLOPT_PUT | TRUEpara hacer un HTTP PUT de un fichero. El fichero a subir debe
            establecerse enCURLOPT_INFILEyCURLOPT_INFILESIZE. | |
| CURLOPT_RETURNTRANSFER | TRUEpara devolver el resultado de la transferencia como string
            del valor de curl_exec() en lugar de mostrarlo
            directamente. | |
| CURLOPT_SAFE_UPLOAD | TRUEpara deshabilitar el soporta para el prefijo @ para
            cargar ficheros enCURLOPT_POSTFIELDS, lo que
            significa que los valores que empiecen por @ pueden ser pasados
            de forma segura como campos. Se podría usar CURLFile
            en su lugar para las cargas. | Añadido en PHP 5.5.0 con FALSEcomo valor predeterminado. PHP 5.6.0
            cabia este valor predeterminado aTRUE. PHP 7 elimina esta opción;
            la interfaz de CURLFile debe emplearse para subir ficheros. | 
| CURLOPT_SASL_IR | TRUEpara habilitar el envío de la respuesta inicial en el primer paquete. | Añadida en cURL 7.31.10. Disponible desde PHP 7.0.7. | 
| CURLOPT_SSL_ENABLE_ALPN | FALSEpara inhabilitar ALPN en la negociación de SSL (si libcurl del
            «backend» de SSL está construido para admitirla), lo cual se puede usar para
            negiaciar http2. | Añadida en cURL 7.36.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_SSL_ENABLE_NPN | FALSEpara inhabilitar NPN en la negociación de SSL (si libcurl del
            «backend» de SSL está construido para admitirla), lo cual se puede usar para
            negiaciar http2. | Añadida en cURL 7.36.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_SSL_VERIFYPEER | FALSEpara que cURL no verifique el peer del certificado.
            Para usar diferentes certificados para la verificación se
            pueden especificar con la opciónCURLOPT_CAINFOo se puede especificar el directorio donde se encuentra
            el certificado con la opciónCURLOPT_CAPATH. | TRUEpor omisión desde cURL 7.10. Paquete instalado por defecto en la versión 
            CURL 7.10. | 
| CURLOPT_SSL_VERIFYSTATUS | TRUEpara verificar el estado del certificado. | Añadida en cURL 7.41.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_TCP_FASTOPEN | TRUEPara habilitar la Apertura Rápida de TCP (TCP Fast Open). | Añadida en cURL 7.49.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_TFTP_NO_OPTIONS | TRUEpara no enviar peticiones de opciones de TFTP. | Añadida en cURL 7.48.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_TRANSFERTEXT | TRUEpara 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 | TRUEpara prevenir el envio de usuario y contraseña cuando
            se siguen locations (usandoCURLOPT_FOLLOWLOCATION), incluso cuando
            el hostname es diferente. | |
| CURLOPT_UPLOAD | TRUEpreparar cURL para subir un fichero. | |
| CURLOPT_VERBOSE | TRUEpara mostrar información verbose. Escribe la
            salida en STDERR, o el fichero especificado usandoCURLOPT_STDERR. | 
       value debe ser un integer para los
       siguientes valores del parámetro option:
       
| Opción | Establecer valuea | 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 | Uno de los valores de CURLCLOSEPOLICY_*.
 | Eliminada en PHP 5.6.0. | 
| 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_EXPECT_100_TIMEOUT_MS | El tiempo de espera para respuestas «Expect: 100-continue», en milisegundos. El valor predeterminado es 1000 milisegundos. | Añadida en cURL 7.36.0. Disponible desde PHP 7.0.7. | 
| 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_HEADEROPT | Cómo tratar con cabeceras. una de las siguientes constantes: CURLHEADER_UNIFIED: las cabeceras especificadas enCURLOPT_HTTPHEADERse usarán en peticiones
             tanto a servidores como a proxies. Con esta opción habilitada,CURLOPT_PROXYHEADERno tendrá efecto.CURLHEADER_SEPARATE: hace que las
             cabecerasCURLOPT_HTTPHEADERsolamente sean enviadas a
             un servidor y no a un proxy. Las cabeceras de proxies deben establecerse conCURLOPT_PROXYHEADERpara poder usarlas. Observe que si
             se envía una petición no CONNECT a un proxy, libcurl enviará tanto
             las cabeceras de servidor como del proxy. Al realizar CONNECT, libcurl
             enviará cabecerasCURLOPT_PROXYHEADERsolamente al
             proxy y luego cabeceerasCURLOPT_HTTPHEADERsolamente al servidor.
            
            
             Lo predeterminado esCURLHEADER_SEPARATEa partir de cURL
             7.42.1, yCURLHEADER_UNIFIEDanteriormente. | Añadida en cURL 7.37.0. Disponible desde PHP 7.0.7. | 
| 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),
            orCURL_HTTP_VERSION_1_1(fuerza HTTP/1.1). | |
| CURLOPT_HTTPAUTH | 
             Los métodos de autenticación HTTP. Las opciones son:
              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. 
              
              | |
| 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_TIMEsegundos 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_LIMITantes 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_CLOSEPOLICYpara 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_POSTREDIR | Una máscara de bit de 1 (301 Movido permanentemente), 2 (302 Encontrado)
            y 4 (303 Ver otro) si el método POST de HTTP debería ser mantenido
            cuando CURLOPT_FOLLOWLOCATIONestá establecido y
            ocurre un tipo específico o una redirección. | Añadido en cURL 7.19.1. Disponible des PHP 5.3.2. | 
| CURLOPT_PROTOCOLS | 
             Máscara de los valores  
             Las opciones para válidos procolos son:
              | 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,
            solamenteCURLAUTH_BASICyCURLAUTH_NTLMestá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),CURLPROXY_SOCKS4,CURLPROXY_SOCKS5,CURLPROXY_SOCKS4AoCURLPROXY_SOCKS5_HOSTNAME. | 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 cuandoCURLOPT_FOLLOWLOCATIONestá 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énCURLOPT_PROTOCOLSpara 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_OPTIONS | Establecer las opciones de funcionamento de SSL, las cuales son una máscara de bits de las siguientes constantes: CURLSSLOPT_ALLOW_BEAST: no intentar usar
             ningún método alternativo para defectos de seguridad en los protocolos SSL3 y TLS1.0.CURLSSLOPT_NO_REVOKE: inhabilitar la comprobación
             de revocación de certificados para aquellos «backends» de SSL donde tal funcionamiento
             está presente. | Añadida en cURL 7.25.0. Disponible desde PHP 7.0.7. | 
| 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. 0 para no comprobar nombres. En entornos de producción el valor de esta opción debe mantenerse a 2 (valor predeterminado). | Soporte para el valor 1 eliminado en cURL 7.28.1 | 
| CURLOPT_SSLVERSION | Una de las constantes 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) oCURL_SSLVERSION_TLSv1_2(6).
 | |
| CURLOPT_STREAM_WEIGHT | Establecer el peso del flujo numérico (un número entre 1 y 256). | Añadida en cURL 7.46.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_TIMECONDITION | Como se trata CURLOPT_TIMEVALUE.
            UtiliceCURL_TIMECOND_IFMODSINCEpara devolver
            la página solamente si fue modificada desde el tiempo especificado enCURLOPT_TIMEVALUE. Si no fué modificada, se
            devolverá "304 Not Modified" en el header asumiendo
            queCURLOPT_HEADEResTRUE.
            UtiliceCURL_TIMECOND_IFUNMODSINCEpara el efecto
            contrario.CURL_TIMECOND_IFMODSINCEestá 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 utilizaCURL_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 aCURLSSH_AUTH_ANYpara 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 esCURL_IPRESOLVE_WHATEVER. | Añadida en cURL 7.10.8. | 
| CURLOPT_FTP_FILEMETHOD | Indicar a curl qué método empelar para alcanzar un fichero en un servidor FTP(S). Los valores posibles son CURLFTPMETHOD_MULTICWD,CURLFTPMETHOD_NOCWDyCURLFTPMETHOD_SINGLECWD. | Añadida en cURL 7.15.1. Disponible desde PHP 5.3.0. | 
       El value debe ser una string para los
       siguientes valores del parámetro option:
       
| Opción | Configurar valuea | 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. | Podría requerir una ruta absoluta. | 
| 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". 
 | |
| CURLOPT_DEFAULT_PROTOCOL | El protocolo predeterminado a usar si al URL le falta un nombre de esquema. | Añadida en cURL 7.45.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_DNS_INTERFACE | Establecer el nombre de la interfaz de red a la que el resolvente de DNS debe vincularse. Debe ser un nombre de interfaz (no una dirección). | Añadida en cURL 7.33.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_DNS_LOCAL_IP4 | Establecer la dirección IPv4 local a la que debe vincularse el resolvente. El argumento debe contener una dirección IPv4 numérica dada como cadena. | Añadida en cURL 7.33.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_DNS_LOCAL_IP6 | Establecer la dirección IPv6 local a la que debe vincularse el resolvente. El argumento debe contener una dirección IPv6 numérica dada como cadena. | Añadida en cURL 7.33.0. Disponible desde PHP 7.0.7. | 
| 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_SSLKEYoCURLOPT_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 NULLpara desactivar seguridad KRB4. Actualmente la seguridad KRB4 solo funciona
            con transaciones FTP. | |
| CURLOPT_LOGIN_OPTIONS | Se puede usar para establecer las opciones de inicio de sesión específicas del protocolo, tales como el
            mecanismoe de autenticación preferido mediante "AUTH=NTLM" o "AUTH=*",
            debiéndose ser usada junto con la opción CURLOPT_USERNAME. | Añadida en cURL 7.34.0. Disponible desde PHP 7.0.7. | 
| CURLOPT_PINNEDPUBLICKEY | Establecer la clave pública fijada. La cadena puede ser el nombre de fichero de la clave pública fijada. El formato de fichero esperado es "PEM" o "DER". La cadena también puede ser cualquier númbero de «hashes» sha256 codificados en base64 precedidos de "sha256//" y separados por ";". | Añadida en cURL 7.39.0. Disponible desde PHP 7.0.7. | 
| 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¶2=val2&...'
             o también como un array con el nombre del campo como key y los datos como value.
             Si valuees un array, el
             encabezado Content-Type será definido como
             multipart/form-data.
            
            
             A partir de PHP 5.2.0,valuedebe 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. El prefijo 
             @ puede ser deshabilitado por seguridad de proporcionar
             valores que comienzan con @ estableciendo la opciónCURLOPT_SAFE_UPLOADaTRUE. | |
| CURLOPT_PRIVATE | Cualquier dato que debería estar asociado con este manejador de cURL. Estos datos
            puede ser recuperados posteriormente con la
            opción CURLINFO_PRIVATEde
            curl_getinfo(). cURL no hace nada con estos datos.
            Al emplear un multimanejador de  cURL, estos datos privados son típicamente una
            clave única para identificar un manejador estándar de cURL. | Añadida en cURL 7.10.3. | 
| CURLOPT_PROXY | El proxy HTTP para enviar peticiones a través de tunel. | |
| CURLOPT_PROXY_SERVICE_NAME | El nombre del servicio de autenticación del proxy. | Añadida en cURL 7.34.0. Disponible desde PHP 7.0.7. | 
| 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_SERVICE_NAME | El nombre del servicio de autenticación. | Añadida en cURL 7.43.0. Disponible desde PHP 7.0.7. | 
| 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_SSLKEYTYPE | Tipo de llave privada SSL especificada en CURLOPT_SSLKEY. Los tipos de claves soportadas son
            "PEM" (default), "DER",
            y "ENG". | |
| CURLOPT_UNIX_SOCKET_PATH | Habilita el uso de sockets de dominio Unix como extremos de conexión y establece la ruta al string dado. | Añadida en cURL 7.40.0. Disponible desde PHP 7.0.7. | 
| 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_USERNAME | El nombre de usuario a emplear en la autenticación. | Añadida en cURL 7.19.0. Disponible desde PHP 5.5.0. | 
| CURLOPT_USERPWD | Nombre de usuario y contraseña siguiendo el formato "[username]:[password]" para ser usado en la conexión. | |
| CURLOPT_XOAUTH2_BEARER | Especifica el «token» de acceso de OAuth 2.0. | Añadida en cURL 7.33.0. Disponible desde PHP 7.0.7. | 
       El value debe ser un array para los
       siguientes valores del parámetro option:
       
| Opción | Configurar valuea | Notas | 
|---|---|---|
| CURLOPT_CONNECT_TO | Se conecta a un puerto y host específicos en lugar del puerto y host del URL. Acepta un array de cadenas con el formato HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT. | Añadida en cURL 7.49.0. Disponible desde PHP 7.0.7. | 
| 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_PROXYHEADER | Un array de cabeceras HTTP personalizadas a pasar a los proxies. | Añadida en cURL 7.37.0. Disponible desde PHP 7.0.7. | 
| 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 valuea | 
|---|---|
| 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 un objeto Closure
       para los siguientes valores del parámetro option:
       
| Opción | Configurar valuea | 
|---|---|
| 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 ser escritos por 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. 
 
             Devuelve un valor distinto de cero para abortar la transferencia. En este caso, la
             transferencia establecerá un error
              | 
| 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 valuea | 
|---|---|
| CURLOPT_SHARE | Un resultado de curl_share_init(). Hace que el gestor de cURL use los datos del gestor compartido. | 
   Devuelve TRUE en caso de éxito o FALSE en caso de error.
  
| Versión | Descripción | 
|---|---|
| 7.0.7 | Se introdujeron CURL_HTTP_VERSION_2,CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE,CURL_HTTP_VERSION_2TLS,CURL_REDIR_POST_301,CURL_REDIR_POST_302,CURL_REDIR_POST_303,CURL_REDIR_POST_ALL,CURL_VERSION_KERBEROS5,CURL_VERSION_PSL,CURL_VERSION_UNIX_SOCKETS,CURLAUTH_NEGOTIATE,CURLAUTH_NTLM_WB,CURLFTP_CREATE_DIR,CURLFTP_CREATE_DIR_NONE,CURLFTP_CREATE_DIR_RETRY,CURLHEADER_SEPARATE,CURLHEADER_UNIFIED,CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE,CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE,CURLMOPT_MAX_HOST_CONNECTIONS,CURLMOPT_MAX_PIPELINE_LENGTH,CURLMOPT_MAX_TOTAL_CONNECTIONS,CURLOPT_CONNECT_TO,CURLOPT_DEFAULT_PROTOCOL,CURLOPT_DNS_INTERFACE,CURLOPT_DNS_LOCAL_IP4,CURLOPT_DNS_LOCAL_IP6,CURLOPT_EXPECT_100_TIMEOUT_MS,CURLOPT_HEADEROPT,CURLOPT_LOGIN_OPTIONS,CURLOPT_PATH_AS_IS,CURLOPT_PINNEDPUBLICKEY,CURLOPT_PIPEWAIT,CURLOPT_PROXY_SERVICE_NAME,CURLOPT_PROXYHEADER,CURLOPT_SASL_IR,CURLOPT_SERVICE_NAME,CURLOPT_SSL_ENABLE_ALPN,CURLOPT_SSL_ENABLE_NPN,CURLOPT_SSL_FALSESTART,CURLOPT_SSL_VERIFYSTATUS,CURLOPT_STREAM_WEIGHT,CURLOPT_TCP_FASTOPEN,CURLOPT_TFTP_NO_OPTIONS,CURLOPT_UNIX_SOCKET_PATH,CURLOPT_XOAUTH2_BEARER,CURLPROTO_SMB,CURLPROTO_SMBS,CURLPROXY_HTTP_1_0,CURLSSH_AUTH_AGENTyCURLSSLOPT_NO_REVOKE. | 
| 7.0.0 | Se ha eliminado el soporte para inhabilitar la opción CURLOPT_SAFE_UPLOAD.
        Todas las subidas de ficheros de curl deben emplear CURLFile. | 
| 5.6.0 | CURLOPT_SAFE_UPLOADahore esTRUEde forma predeterminada. | 
| 5.6.0 | Se eliminó CURLOPT_CLOSEPOLICYy sus valores asociados. | 
| 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, yCURLOPT_REDIR_PROTOCOLS. | 
| 5.2.4 | Se introdujo CURLOPT_PRIVATE. | 
| 5.1.0 | Se introdujo CURLOPT_AUTOREFERER,CURLOPT_BINARYTRANSFER,CURLOPT_FTPSSLAUTH,CURLOPT_PROXYAUTH, yCURLOPT_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, yCURLOPT_HTTP200ALIASES. | 
Ejemplo #1 Inicializar una nueva sesión de cURL y obtener una página web
<?php
// Crear un nuevo recurso cURL
$ch = curl_init();
// Configurar URL y otras opciones apropiadas
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// Capturar la URL y pasarla al navegador
curl_exec($ch);
// Cerrar el recurso cURL y liberar recursos del sistema
curl_close($ch);
?>
Ejemplo #2 Subir un fichero (obsoleto a partir de PHP 5.5.0)
<?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_SAFE_UPLOAD, false); // requerido a partir de PHP 5.6.0
curl_setopt($ch, CURLOPT_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
        )
)
Nota:
Si pasamos un array a
CURLOPT_POSTFIELDScodificará los datos como multipart/form-data, pero si pasamos una cadena URL-encoded codificará los datos como application/x-www-form-urlencoded.