(PHP 4 >= 4.0.2, PHP 5)
curl_setopt — Configura una opción para una transferencia cURL
Establece una opción en la sesión del recurso cURL.
El recurso cURL devuelto por curl_init().
La opción CURLOPT_XXX a configurar.
Valor a configurar en la opción.
El valor de la opción debe ser un boleano para los siguientes parámetros:
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 en sin formato cuando CURLOPT_RETURNTRANSFER está activado. | |
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_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 silenciosamente 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_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. | |
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.
|
|
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. Seguramente también necesitará que CURLOPT_SSL_VERIFYHOST sea TRUE o FALSE si CURLOPT_SSL_VERIFYPEER está desactivado (por defecto es 2). | TRUE por defecto desde 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. |
El valor de la opción debe ser un entero para los siguientes parámetros:
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. | 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. | |
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. | |
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. | 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. |
El valor de la opción debe ser una cadena para los siguientes parámetros:
Opción | Configurar valor 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. | |
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. | |
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_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 "POST". La instrucción "POST" dice al servidor remoto a que 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_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 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 el value es un array, el header Content-Type será establecido a multipart/form-data. | |
CURLOPT_PROXY | El proxy HTTP para enviar peticiones a través de tunel. | |
CURLOPT_PROXYUSERPWD | Usuario y contraseña con el siguiente formato "[usuario]:[contraseña]" 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_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.
|
|
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 valor de la opción debe ser un array para los siguientes parámetros:
Opción | Configurar valor 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 valor de la opción debe ser un recurso stream (usando fopen(), por ejemplo) para los siguientes parámetros:
Opción | Configurarvalor a | Notas |
---|---|---|
CURLOPT_FILE | El fichero que la transferencia guardará el resultado. Por defecto es STDOUT (la ventana del navegador). | |
CURLOPT_INFILE | El fichero a subir en la transferencia. | |
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. |
El valor de la opción debe ser un string válido para la llamada a una función de retorno para los siguientes parámetros:
Opción | Configurarvalor a | Notas |
---|---|---|
CURLOPT_HEADERFUNCTION | Nombre de la función de llamada de retorno donde la función toma dos parámetros. El primero es el recurso cURL, el sengudo es una cadena con los datos del header a ser escritos. Los datos del header deben ser escritos cuando se llama a la función de retorno. Devuelve el numero de bytes escritos. | |
CURLOPT_PASSWDFUNCTION | Nombre de la función de llamada de retorno donde la función toma tres parámetros. El primero es el recurso cURL, el segundo es una cadena que contiene la contraseña, y el tercero es la longitud máxima para la contraseña. Devuelve una cadena que contiene la contraseña. | |
CURLOPT_PROGRESSFUNCTION | Nombre de la función de llamada de retorno donde la función toma tres parámetros. El primero es el recurso cURL, el sengudo es el recurso file-descriptor y el tercero es la longitud. Devuelve una cadena que contiene los datos. | |
CURLOPT_READFUNCTION | Nombre de la función de llamada de retorno donde la función toma dos parámetros. El primero es el recurso cURL, y el segundo es una cadena con los datos a leer. Los datos se deben leer usando esta función de retorno. Devuelve el número de bytes leídos. Devuelve 0 para la señal EOF. | |
CURLOPT_WRITEFUNCTION | Nombre de la función de llamda de retorno donde la función toma dos parámetros. El primero es el recurso cURL, y el segundo es una cadena con los datos a ser escritos. Los datos deben ser escritos usando esta función de retorno. Debe devolver el número exacto de bytes a ser escritos o la transferencia será abortada con un error. |
Devuelve TRUE en caso de éxito o FALSE en caso de error.
Versión | Descripción |
---|---|
5.2.10 | Disponibles CURLOPT_PROTOCOLS, y CURLOPT_REDIR_PROTOCOLS. |
5.1.0 | Disponibles CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, y CURLOPT_TIMECONDITION. |
5.0.0 | Disponibles CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, y CURLOPT_HTTP200ALIASES. |
Example #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);
?>
Example #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 ) )
Note:
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.