curl_setopt
(PHP 4 >= 4.0.2, PHP 5)
curl_setopt — Configura una opción para una transferencia cURL
Descripción
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.valuedebe ser unboolpara los siguientes valores del parámetrooption:Opción Establecer valueaNotas CURLOPT_AUTOREFERERTRUEpara automáticamente establecer el valor del campo Referer: en peticiones que siguen una redireción Location:.CURLOPT_BINARYTRANSFERTRUEpara 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_COOKIESESSIONTRUEpara 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_CERTINFOTRUEpara 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_ONLYTRUEle 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_CRLFTRUEpara convertir nuevas líneas Unix a nuevas líneas CRLF en transferencias.CURLOPT_DNS_USE_GLOBAL_CACHETRUEpara usar caché DNS global. Esta opción no es thread-safe y está activada por defecto.CURLOPT_FAILONERRORTRUEpara 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_FILETIMETRUEpara intentar obtener la fecha de modificación del documento. Este valor puede obtenerse usando la opciónCURLINFO_FILETIMEcon curl_getinfo().CURLOPT_FOLLOWLOCATIONTRUEpara 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_REUSETRUEpara forzar a cerrar explicitamente la conexión cuando se finalice el proceso y no guardarla para su reuso.CURLOPT_FRESH_CONNECTTRUEpara forzar el uso de una nueva conexión en lugar de usar una en caché.CURLOPT_FTP_USE_EPRTTRUEpara usar EPRT (y LPRT) cuando se hacen descargas FTP activas. UseFALSEpara desactivar EPRT y LPRT y usar PORT solamente.CURLOPT_FTP_USE_EPSVTRUEpara probar primero el comando EPSV para transferencias FTP antes de volver a PASV. Establezca la opción aFALSEpara desactivar EPSV.CURLOPT_FTP_CREATE_MISSING_DIRSTRUEpara crear directorios faltantes cuando una operación se encuentra con una ruta que actualmente no existe.CURLOPT_FTPAPPENDTRUEpara añadir al fichero remoto en lugar de sobreescribirlo.CURLOPT_TCP_NODELAYProporcionar un valor de tipo long espqcificando si la opción TCP_NODELAY se establece o se limpia (1 = establecida, 0 = limpiada). La opción está limpiada de manera predeteminada. Disponible desde PHP 5.2.1 para versiones compiladas con libcurl 7.11.2 o superior. CURLOPT_FTPASCIIUn alias de CURLOPT_TRANSFERTEXT. Para usar en su lugar.CURLOPT_FTPLISTONLYTRUEpara solo listar los nombres de un directorio FTP directorio.CURLOPT_HEADERTRUEpara incluir el header en el output.CURLINFO_HEADER_OUTTRUEpara seguir la cadena de la petición del recurso.Disponible desde PHP 5.1.3. El prefijo CURLINFO_es intencionado.CURLOPT_HTTPGETTRUEpara 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_HTTPPROXYTUNNELTRUEpara usar un tunel a través de un proxy HTTP.CURLOPT_MUTETRUEpara 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_NETRCTRUEpara escanear el fichero ~/.netrc y buscar un usuario y contraseña para establecer una conexión con el sitio remoto.CURLOPT_NOBODYTRUEpara 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_NOPROGRESSTRUEpara 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_NOSIGNALTRUEpara 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_POSTTRUEpara hacer un HTTP POST normal. Este POST del tipo application/x-www-form-urlencoded, el más común en formularios HTML.CURLOPT_PUTTRUEpara hacer un HTTP PUT de un fichero. El fichero a subir debe establecerse enCURLOPT_INFILEyCURLOPT_INFILESIZE.CURLOPT_RETURNTRANSFERTRUEpara devolver el resultado de la transferencia como string del valor de curl_exec() en lugar de mostrarlo directamente.CURLOPT_SAFE_UPLOADTRUEpara 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.CURLOPT_SSL_VERIFYPEERFALSEpara 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_TRANSFERTEXTTRUEpara 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_AUTHTRUEpara prevenir el envio de usuario y contraseña cuando se siguen locations (usandoCURLOPT_FOLLOWLOCATION), incluso cuando el hostname es diferente.CURLOPT_UPLOADTRUEpreparar cURL para subir un fichero.CURLOPT_VERBOSETRUEpara mostrar información verbose. Escribe la salida en STDERR, o el fichero especificado usandoCURLOPT_STDERR.valuedebe ser un integer para los siguientes valores del parámetrooption:Opción Establecer valueaNotas CURLOPT_BUFFERSIZETamañ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_CLOSEPOLICYUno de los valores de CURLCLOSEPOLICY_*.Nota:
Esta opción está obsoleta, ya que nunca se ha implementado en cURL, por lo que nunca ha tenido ningún efecto.
Eliminada en PHP 5.6.0. CURLOPT_CONNECTTIMEOUTNúmero de segundos a esperar cuando se está intentado conectar. Use 0 para esperar indefinidamente. CURLOPT_CONNECTTIMEOUT_MSNú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_TIMEOUTNúmero de segundos a mantener las entradas DNS en memoria. Esta opción está establecida a 120 (2 minutos) por defecto. CURLOPT_FTPSSLAUTHMé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_VERSIONCURL_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_HTTPAUTHLos métodos de autenticación HTTP. Las opciones son:
CURLAUTH_BASIC,CURLAUTH_DIGEST,CURLAUTH_GSSNEGOTIATE,CURLAUTH_NTLM,CURLAUTH_ANY, yCURLAUTH_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_ANYes un alias para CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.CURLAUTH_ANYSAFEes un alias para CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.CURLOPT_INFILESIZEEl 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_LIMITLa 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_TIMENú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_MAXCONNECTSNú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_MAXREDIRSNúmero máximo de redirecciones HTTP a seguir. Use esta opción con CURLOPT_FOLLOWLOCATION.CURLOPT_PORTPuerto alternativo a conectarse. CURLOPT_POSTREDIRUna 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_PROTOCOLSMá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_ALLAñadido en cURL 7.19.4. CURLOPT_PROXYAUTHMé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_PROXYPORTNúmero del puerto para usar en la conexión proxy. Este puerto también puede configurase en CURLOPT_PROXY.CURLOPT_PROXYTYPEPuede ser CURLPROXY_HTTP(por defecto) o bienCURLPROXY_SOCKS5.Añadido en cURL 7.10. CURLOPT_REDIR_PROTOCOLSMá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_FROMEl punto, en bytes desde donde continuar una transferencia. CURLOPT_SSL_VERIFYHOST1 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_SSLVERSIONUna 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).Nota:
Lo mejor es no establecerlo y dejar el valor predeterminado. Establecerlo a 2 o 3 es muy peligroso dadas las vulnerabilidades conocidas en SSLv2 y SSLv3.
CURLOPT_TIMECONDITIONComo 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_TIMEOUTNúmero máximo de segundos permitido para ejectuar funciones cURL. CURLOPT_TIMEOUT_MSNú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_TIMEVALUETiempo 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_LARGESi 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_LARGESi 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_TYPESUna 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_IPRESOLVEPermite 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. El
valuedebe ser una string para los siguientes valores del parámetrooption:Opción Configurar valueaNotas CURLOPT_CAINFONombre 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_CAPATHDirectorio que contiene múltiple certificados CA. Utilice esta opción junto con CURLOPT_SSL_VERIFYPEER.CURLOPT_COOKIEContenido 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_COOKIEFILENombre 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_COOKIEJARNombre del fichero donde guardar cookies internas cuando se cierra se cierra, por e.j. después de llamar a curl_close. CURLOPT_CUSTOMREQUESTMé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_EGDSOCKETEs como CURLOPT_RANDOM_FILE, con excepción que en lugar de un fichero se utiliza un Entropy Gathering Daemon socket.CURLOPT_ENCODINGContenido 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_FTPPORTEl 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_INTERFACENombre del interfaz de salida a usar. Puede ser el nombre del interfaz, una dirección IP o el nombre de un servidor. CURLOPT_KEYPASSWDEl password requerido para usar la clave privada CURLOPT_SSLKEYoCURLOPT_SSH_PRIVATE_KEYFILE.Añadido en cURL 7.16.1. CURLOPT_KRB4LEVELNivel 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_POSTFIELDSTodos 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_PROXYEl proxy HTTP para enviar peticiones a través de tunel. CURLOPT_PROXYUSERPWDUsuario y contraseña con el siguiente formato "[username]:[password]" para usarse en la conexión al proxy. CURLOPT_RANDOM_FILENombre del fichero a ser usado para generar números aleatorios para el SSL. CURLOPT_RANGERango(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_REFERERContenido del Header "Referer: " para ser usado en la petición HTTP. CURLOPT_SSH_HOST_PUBLIC_KEY_MD5Un 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_KEYFILEEl 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_KEYFILEEl 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_LISTLista de ciphers a ser usados por SSL. Por ejemplo, RC4-SHA y TLSv1 es una lista válida de ciphers. CURLOPT_SSLCERTNombre del fichero que contiene un certificado con formato PEM. CURLOPT_SSLCERTPASSWDContraseña requerida para usar el certificado CURLOPT_SSLCERT.CURLOPT_SSLCERTTYPEFormato del certificado. Los formatos soportados son "PEM" (por defecto), "DER", y "ENG". Añadido en cURL 7.9.3. CURLOPT_SSLENGINEEl identificador para el crypto engine de la clave privada SSL especificada en CURLOPT_SSLKEY.CURLOPT_SSLENGINE_DEFAULTIdentificador para el crypto engine usado para operaciones crypto asimétricas. CURLOPT_SSLKEYNombre del fichero que contiene la clave privada SSL. CURLOPT_SSLKEYPASSWDContraseñ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_SSLKEYTYPETipo de llave privada SSL especificada en CURLOPT_SSLKEY. Los tipos de claves soportadas son "PEM" (default), "DER", y "ENG".CURLOPT_URLDirección URL a capturar. Este valor también puede ser configurado cuando se inicia una sesión con curl_init(). CURLOPT_USERAGENTContenido del header "User-Agent: " a ser usado en la petición HTTP. CURLOPT_USERPWDNombre de usuario y contraseña siguiendo el formato "[username]:[password]" para ser usado en la conexión. El
valuedebe ser un array para los siguientes calores del parámetrooption:Opción Configurar valueaNotas CURLOPT_HTTP200ALIASESArray de respuestas HTTP 200 que serán tratadas como respuestas válidas y no como errores. Añadido en cURL 7.10.3. CURLOPT_HTTPHEADERUn array de campos a configurar para el header HTTP, en el formato: array('Content-type: text/plain', 'Content-length: 100')CURLOPT_POSTQUOTEUn array de comandos FTP a ejecutar en el servidor después de que se realice la petición FTP. CURLOPT_QUOTEUn array de comandos FTP a ejecutar en el servidor antes de que se realice la petición FTP. El
valuedebe ser un recurso de flujo (usando fopen(), por ejemplo) para los siguientes valores del parámetrooption:Opción Configurar valueaCURLOPT_FILEEl fichero en el que el proceso de transferencia guardará el resultado. Por defecto es STDOUT (la ventana del navegador). CURLOPT_INFILEEl fichero que el proceso de transferencia debe leer a la hora de subir un fichero. CURLOPT_STDERRLocalización alternativa para mostrar los errores en lugar de STDERR. CURLOPT_WRITEHEADEREl fichero donde guardar la parte del header durante la transferencia. valuedebería ser el nombre de una función válida o una Clausura para los siguientes valores del parámetrooption:Opción Configurar valueaCURLOPT_HEADERFUNCTIONUna 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_PASSWDFUNCTIONUna 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_PROGRESSFUNCTIONUna 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_NOPROGRESSestá establecida aFALSE.Devuelve un valor distinto de cero para abortar la transferencia. En este caso, la transferencia establecerá un error
CURLE_ABORTED_BY_CALLBACK.CURLOPT_READFUNCTIONUna 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_WRITEFUNCTIONUna 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 valueaCURLOPT_SHAREUn 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.6.0 |
CURL_SAFE_UPLOAD ahore es TRUE de forma predeterminada.
|
| 5.6.0 |
Se eliminó CURLOPT_CLOSEPOLICY y 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, 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($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 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($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
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
)
)
Notas
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.