Función curl_setopt de PHP

PHP Calendar 参考手册Manual de referencia de cURL de PHP

(PHP 4 >= 4.0.2, PHP 5)

curl_setopt — Establece una opción de transferencia cURL.


Descripción

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

Establece una opción para el handle de sesión cURL dado.


Parámetros

ch

El handle de cURL devuelto por curl_init().

option

La opción CURLOPT_XXX que se desea establecer.

value

El valor que se establecerá en la opción option.

Para las siguientes opciones option, el valor de value debe establecerse como un valor de tipo bool:

Opción OpcionalvalueValor Notas
CURLOPT_AUTOREFERER Cuando, segúnLocation:al redirigir, establece automáticamente en el header el campoReferer:de información.
CURLOPT_BINARYTRANSFER Al habilitarCURLOPT_RETURNTRANSFER, se devuelve la salida nativa (Raw).
CURLOPT_COOKIESESSION Cuando está habilitado, cURL solo transferirá una cookie de sesión e ignorará las demás cookies. De forma predeterminada, cURL devuelve todas las cookies al servidor. Las cookies de sesión son aquellas que existen para determinar si la sesión del servidor es válida.
CURLOPT_CRLF Cuando está habilitado, convierte los saltos de línea de Unix a retorno de carro y salto de línea.
CURLOPT_DNS_USE_GLOBAL_CACHE Cuando está habilitado, se habilita una caché DNS global. Esta opción es segura para subprocesos (thread-safe) y está habilitada de forma predeterminada.
CURLOPT_FAILONERROR Muestra el código de estado HTTP. El comportamiento predeterminado es ignorar la información HTTP con números menores o iguales a 400.
CURLOPT_FILETIME Cuando está habilitado, intenta obtener la información de modificación del documento remoto. La información resultante se devolverá a través de la función curl_getinfo() con laCURLINFO_FILETIMEopción devuelta. curl_getinfo().
CURLOPT_FOLLOWLOCATION Cuando está habilitado, la información devuelta por el servidor se"Location: "devuelve recursivamente al servidor en el header; usandoCURLOPT_MAXREDIRSse puede limitar la cantidad de devoluciones recursivas.
CURLOPT_FORBID_REUSE Fuerza la desconexión después de completar la interacción; no se puede reutilizar.
CURLOPT_FRESH_CONNECT Fuerza la obtención de una nueva conexión, reemplazando la conexión en caché.
CURLOPT_FTP_USE_EPRT Cuando está habilitado, durante la descarga FTP se utiliza el comando EPRT (o LPRT). Si se establece enFALSEse deshabilitan EPRT y LPRT, y se usa solamente el comando PORT.
CURLOPT_FTP_USE_EPSV Cuando está habilitado, durante la transferencia FTP se intenta primero el comando EPSV antes de volver al modo PASV. Si se establece enFALSEse deshabilita el comando EPSV.
CURLOPT_FTPAPPEND Cuando está habilitado, escribe añadiendo al archivo en lugar de sobrescribirlo.
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXTes un alias de.
CURLOPT_FTPLISTONLY Cuando está habilitado, solo se listan los nombres de los directorios FTP.
CURLOPT_HEADER Cuando está habilitado, la información del header se genera como flujo de datos.
CURLINFO_HEADER_OUT Cuando está habilitado, rastrea la cadena de solicitud del handle. Disponible desde PHP 5.1.3.CURLINFO_El prefijo es intencional.
CURLOPT_HTTPGET Cuando está habilitado, se establece el método HTTP en GET. Como GET es el valor predeterminado, solo se usa cuando ha sido modificado.
CURLOPT_HTTPPROXYTUNNEL Cuando está habilitado, la transferencia se realiza a través de un proxy HTTP.
CURLOPT_MUTE Cuando está habilitado, restablece a los valores predeterminados todos los parámetros modificados en las funciones de cURL.
CURLOPT_NETRC Después de establecer la conexión, accede al~/.netrcarchivo para obtener el nombre de usuario y la contraseña y conectar con el sitio remoto.
CURLOPT_NOBODY Cuando está habilitado, no se emitirá la parte BODY del HTML.
CURLOPT_NOPROGRESS

Cuando está habilitado, desactiva la barra de progreso de la transferencia curl. Esta opción está habilitada de forma predeterminada.

Note:

PHP establece automáticamente esta opción comoTRUE; esta opción solo debe cambiarse con fines de depuración.

CURLOPT_NOSIGNAL Cuando está habilitado, ignora todas las señales que curl transmite a PHP. Esta opción está habilitada de forma predeterminada en transferencias SAPI multiproceso. Se agregó en cURL 7.10.
CURLOPT_POST Cuando está habilitado, se envía una solicitud POST normal, de tipo:application/x-www-form-urlencoded, igual que el envío de un formulario.
CURLOPT_PUT Cuando está habilitado, permite enviar archivos por HTTP; también debe establecerseCURLOPT_INFILEyCURLOPT_INFILESIZE。
CURLOPT_RETURNTRANSFER devuelve la información obtenida por curl_exec() como un flujo de archivo, en lugar de generarla directamente.
CURLOPT_SSL_VERIFYPEER Cuando está deshabilitado, cURL dejará de realizar la verificación del servidor. UseCURLOPT_CAINFOla opción para configurar el certificado; useCURLOPT_CAPATHla opción para configurar el directorio de certificados.CURLOPT_SSL_VERIFYPEERSiCURLOPT_SSL_VERIFYHOSTdebe establecerse comoTRUEde lo contrario, establézcase comoFALSE。 Desde cURL 7.10, el valor predeterminado esTRUE. Desde cURL 7.10, se habilita de forma predeterminada.
CURLOPT_TRANSFERTEXT Cuando está habilitado, se usa el modo ASCII para transferencias FTP. Para LDAP, recupera información de texto sin formato en lugar de HTML. En sistemas Windows, el sistema noSTDOUTlo establecerá en modo binario.
CURLOPT_UNRESTRICTED_AUTH Al usarCURLOPT_FOLLOWLOCATIONse siguen agregando el nombre de usuario y la contraseña en las múltiples ubicaciones (locations) del header generado, incluso si el dominio ha cambiado.
CURLOPT_UPLOAD Cuando está habilitado, permite la carga de archivos.
CURLOPT_VERBOSE Cuando está habilitado, se reporta toda la información, almacenada enSTDERRo en elCURLOPT_STDERRespecificado.

Para las siguientes opciones option, el valor de value debe establecerse como un valor de tipo integer:

Opción OpcionalvalueValor Notas
CURLOPT_BUFFERSIZE El tamaño del búfer que se lee en cada obtención de datos, pero no se garantiza que este valor se llene por completo cada vez. Se agregó en cURL 7.10.
CURLOPT_CLOSEPOLICY O bien CURLCLOSEPOLICY_LEAST_RECENTLY_USED o bien CURLCLOSEPOLICY_OLDEST; existen otros tres CURLCLOSEPOLICY, pero cURL aún no los admite.
CURLOPT_CONNECTTIMEOUT El tiempo de espera antes de iniciar la conexión; si se establece en 0, espera indefinidamente.
CURLOPT_CONNECTTIMEOUT_MS El tiempo de espera para intentar la conexión, en milisegundos. Si se establece en 0, espera indefinidamente. Se agregó en cURL 7.16.2. Disponible desde PHP 5.2.3.
CURLOPT_DNS_CACHE_TIMEOUT Establece el tiempo durante el cual se guarda la información DNS en memoria; el valor predeterminado es 120 segundos.
CURLOPT_FTPSSLAUTH Método de autenticación FTP:CURLFTPAUTH_SSL(intenta SSL primero),CURLFTPAUTH_TLS(intenta TLS primero) oCURLFTPAUTH_DEFAULT(deja que cURL lo decida automáticamente). Se agregó en cURL 7.12.2.
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE(valor predeterminado, deja que cURL decida qué versión usar),CURL_HTTP_VERSION_1_0(fuerza el uso de HTTP/1.0) oCURL_HTTP_VERSION_1_1(fuerza el uso de HTTP/1.1).
CURLOPT_INFILESIZE Establece el límite de tamaño del archivo de subida, en bytes.
CURLOPT_LOW_SPEED_LIMIT Cuando la velocidad de transferencia sea menor queCURLOPT_LOW_SPEED_LIMIT(bytes/seg), PHP, de acuerdo conCURLOPT_LOW_SPEED_TIMEdecidirá si cancela la transferencia por ser demasiado lenta.
CURLOPT_LOW_SPEED_TIME Cuando la velocidad de transferencia sea menor queCURLOPT_LOW_SPEED_LIMIT(bytes/seg), PHP, de acuerdo conCURLOPT_LOW_SPEED_TIMEdecidirá si cancela la transferencia por ser demasiado lenta.
CURLOPT_MAXCONNECTS El número máximo de conexiones permitidas; al superarse, se utilizaráCURLOPT_CLOSEPOLICYpara decidir qué conexiones deben detenerse.
CURLOPT_MAXREDIRS Especifica el número máximo de redirecciones HTTP; esta opción está pensada para usarseCURLOPT_FOLLOWLOCATIONjunto con.
CURLOPT_PORT Se utiliza para especificar el puerto de conexión. (Opcional)
CURLOPT_PROTOCOLS CURLPROTO_*El campo de bits de. Si se habilita, el valor del campo de bits limitará qué protocolos puede utilizar libcurl durante la transferencia. Esto permite admitir muchos protocolos al compilar libcurl, pero restringir el uso solo a un subconjunto permitido de ellos. De forma predeterminada, libcurl utilizará todos los protocolos que admite. ConsulteCURLOPT_REDIR_PROTOCOLS. Las opciones de protocolo disponibles 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 Se agregó en cURL 7.19.4.
CURLOPT_PROTOCOLS CURLPROTO_*El campo de bits de. Si se habilita, el valor del campo de bits limitará qué protocolos puede utilizar libcurl durante la transferencia. Esto permite admitir muchos protocolos al compilar libcurl, pero restringir el uso solo a un subconjunto permitido de ellos. De forma predeterminada, libcurl utilizará todos los protocolos que admite. ConsulteCURLOPT_REDIR_PROTOCOLS. Las opciones de protocolo disponibles 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 para la conexión al proxy HTTP. Utilice losCURLOPT_HTTPAUTHindicadores de campo de bits para establecer la opción correspondiente. Para la autenticación de proxy soloCURLAUTH_BASICyCURLAUTH_NTLMestá soportado actualmente. Añadido en cURL 7.10.7.
CURLOPT_PROXYPORT Puerto del servidor proxy. El puerto también se puedeCURLOPT_PROXYestablecer en.
CURLOPT_PROXYTYPE No esCURLPROXY_HTTP(valor por defecto) oCURLPROXY_SOCKS5。 Añadido en cURL 7.10.
CURLOPT_REDIR_PROTOCOLS CURLPROTO_*El valor de campo de bits. Si está habilitado, el valor de campo de bits limitará el hilo de transferencia cuandoCURLOPT_FOLLOWLOCATIONesté habilitado y se siga una redirección, los protocolos que se pueden usar. Esto le permite restringir el hilo de transferencia a un subconjunto de protocolos permitidos durante las redirecciones. De forma predeterminada, libcurl permitirá todos los protocolos excepto FILE y SCP. Esto difiere de la versión previa al lanzamiento de 7.19.4, que seguía incondicionalmente todos los protocolos compatibles. Para las constantes de protocolo, consulteCURLOPT_PROTOCOLS。 Añadido en cURL 7.19.4.
CURLOPT_RESUME_FROM Pasar un desplazamiento de bytes al reanudar la transferencia (para la reanudación de descargas).
CURLOPT_SSL_VERIFYHOST 1 Comprobar si existe un nombre común (common name) en el certificado SSL del servidor. Nota del traductor: el nombre común generalmente es el dominio o subdominio para el cual solicitará el certificado SSL. 2 Comprobar si existe el nombre común y si coincide con el nombre de host proporcionado.
CURLOPT_SSLVERSION Versión de SSL utilizada (2 o 3). De forma predeterminada, PHP detecta este valor por sí mismo, aunque en algunos casos es necesario configurarlo manualmente.
CURLOPT_TIMECONDITION SiCURLOPT_TIMEVALUEdespués de la hora especificada ha sido modificado, utiliceCURL_TIMECOND_IFMODSINCEdevuelve la página; si no ha sido modificado, yCURLOPT_HEADERes true, devuelve un"304 Not Modified"cabecera deCURLOPT_HEADERes false, utiliceCURL_TIMECOND_IFUNMODSINCEel valor predeterminado esCURL_TIMECOND_IFUNMODSINCE。
CURLOPT_TIMEOUT Establecer el número máximo de segundos que se permite ejecutar a cURL.
CURLOPT_TIMEOUT_MS Establecer el número máximo de milisegundos que se permite ejecutar a cURL. Añadido en cURL 7.16.2. Disponible desde PHP 5.2.3.
CURLOPT_TIMEVALUE Establecer unCURLOPT_TIMECONDITIONmarca de tiempo utilizada; de forma predeterminada se utilizaCURL_TIMECOND_IFMODSINCE。

Para los siguientes parámetros opcionales de estas opciones, el valor debe establecerse como un valor de tipo string:

Opción OpcionalvalueValor Notas
CURLOPT_CAINFO Un nombre de archivo que contiene uno o más certificados para que el servidor los verifique. Este parámetro solo tiene sentido cuando se usa junto conCURLOPT_SSL_VERIFYPEERsolo tiene sentido cuando se usa junto con.
CURLOPT_CAPATH Un directorio que contiene varios certificados CA. Esta opción se utiliza junto conCURLOPT_SSL_VERIFYPEERutilizada junto con.
CURLOPT_COOKIE Establecer el contenido de"Cookie: "en la solicitud HTTP. Varias cookies se separan con punto y coma seguido de un espacio (por ejemplo, "fruit=apple; colour=red").
CURLOPT_COOKIEFILE Nombre de archivo que contiene los datos de cookie. El formato del archivo de cookies puede ser el formato Netscape o simplemente información de cabecera HTTP pura guardada en un archivo.
CURLOPT_COOKIEJAR Archivo donde se guardan las cookies después de que finalice la conexión.
CURLOPT_CUSTOMREQUEST

Utilizar una solicitud personalizada en lugar de"GET"o"HEAD"como solicitud HTTP. Esto es útil para realizar"DELETE"u otras solicitudes HTTP más ocultas. Valores válidos como"GET","POST","CONNECT"etc. Es decir, no ingrese toda la solicitud HTTP aquí. Por ejemplo, ingresar"GET /index.html HTTP/1.0\r\n\r\n"no es correcto.

Note:

No lo utilice hasta confirmar que el servidor admite este método de solicitud personalizado.

CURLOPT_EGDSOCKET Similar aCURLOPT_RANDOM_FILE, excepto un socket de daemon de recopilación de entropía (Entropy Gathering Daemon).
CURLOPT_ENCODING En la cabecera de la solicitud HTTP"Accept-Encoding: "el valor de. Las codificaciones admitidas son"identity","deflate"y"gzip". Si es una cadena vacía"", la cabecera de solicitud enviará todos los tipos de codificación admitidos. Añadido en cURL 7.10.
CURLOPT_FTPPORT Este valor se utilizará para obtener la dirección IP necesaria para el comando "POST" de FTP. El comando "POST" le indica al servidor remoto que se conecte a la dirección IP que especificamos. Esta cadena puede ser una dirección IP en texto plano, un nombre de host, un nombre de interfaz de red (en UNIX) o simplemente un '-' para usar la dirección IP predeterminada.
CURLOPT_INTERFACE Nombre de la interfaz de red de envío; puede ser un nombre de interfaz, una dirección IP o un nombre de host.
CURLOPT_KRB4LEVEL Nivel de seguridad KRB4 (Kerberos 4). Cualquiera de los siguientes valores es válido (en orden de menor a mayor):"clear"、"safe"、"confidential"、"private".. Si la cadena no coincide con ninguno de estos, se utilizará"private". Si esta opción se establece enNULLse deshabilitará la autenticación de seguridad KRB4. Actualmente, la autenticación de seguridad KRB4 solo se puede utilizar para transferencias FTP.
CURLOPT_POSTFIELDS Todos los datos se envían mediante la operación "POST" del protocolo HTTP. Para enviar archivos, anteponga@al nombre del archivo y use la ruta completa. Este parámetro puede ser una cadena codificada con urlencode como 'para1=val1&para2=val2&...' o un array con los nombres de los campos como claves y los datos de los campos como valores. Sivaluees un array,Content-Typela cabecera se establecerá enmultipart/form-data。
CURLOPT_PROXY Túnel HTTP a través del proxy.
CURLOPT_PROXYUSERPWD Una cadena utilizada para conectarse al proxy"[username]:[password]"con formato.
CURLOPT_RANDOM_FILE Un nombre de archivo utilizado para generar la semilla de números aleatorios SSL.
CURLOPT_RANGE con"X-Y"de la forma, donde X e Y son rangos opcionales para obtener datos, en bytes. El hilo de transferencia HTTP también admite varios de estos elementos repetidos separados por comas, como"X-Y,N-M"。
CURLOPT_REFERER En la cabecera de la solicitud HTTP"Referer: "el contenido de.
CURLOPT_SSL_CIPHER_LIST Una lista de algoritmos de cifrado SSL. Por ejemplo,RC4-SHAyTLSv1son listas de cifrado disponibles.
CURLOPT_SSLCERT Un nombre de archivo que contiene un certificado en formato PEM.
CURLOPT_SSLCERTPASSWD Utilice laCURLOPT_SSLCERTcontraseña requerida para el certificado.
CURLOPT_SSLCERTTYPE Tipo de certificado. Los formatos admitidos son"PEM"(valor predeterminado),"DER"y"ENG"。 Añadido en cURL 7.9.3.
CURLOPT_SSLENGINE Utilizado paraCURLOPT_SSLKEYla variable del motor de cifrado de la clave privada SSL especificada en.
CURLOPT_SSLENGINE_DEFAULT Variable utilizada para operaciones de cifrado asimétrico.
CURLOPT_SSLKEY Nombre de archivo que contiene la clave privada SSL.
CURLOPT_SSLKEYPASSWD

EnCURLOPT_SSLKEYContraseña de la clave privada SSL especificada en

Note:

Dado que esta opción contiene información confidencial de la contraseña, recuerde mantener seguro este script PHP.

CURLOPT_SSLKEYTYPE CURLOPT_SSLKEYel tipo de cifrado de la clave privada especificado; los tipos de clave admitidos son"PEM"(valor predeterminado),"DER"y"ENG"。
CURLOPT_URL La URL que se debe obtener, también se puedecurl_init()establecer en la función.
CURLOPT_USERAGENT Incluir en la solicitud HTTP una"User-Agent: "cadena de cabecera.
CURLOPT_USERPWD Pasar el nombre de usuario y la contraseña necesarios para la conexión, en el formato:"[username]:[password]"。

Para los siguientes parámetros opcionales de estas opciones, el valor debe establecerse como un array:

Opción OpcionalvalueValor Notas
CURLOPT_HTTP200ALIASES Array de códigos de respuesta 200. Los códigos de respuesta del array se consideran respuestas correctas; de lo contrario, se consideran incorrectas. Añadido en cURL 7.10.3.
CURLOPT_HTTPHEADER Un array para establecer los campos de la cabecera HTTP. Establezca utilizando un array con la siguiente forma: array('Content-type: text/plain', 'Content-length: 100')
CURLOPT_POSTQUOTE Un conjunto de comandos FTP que se ejecutan en el servidor después de que se complete la solicitud FTP.
CURLOPT_QUOTE Un conjunto de comandos FTP que se ejecutan en el servidor antes de la solicitud FTP.

Para los siguientes parámetros opcionales de estas opciones, el valor debe establecerse como un recurso de flujo (por ejemplo, usando fopen()):

Opción OpcionalvalueValor
CURLOPT_FILE Establecer la ubicación del archivo de salida; el valor es un tipo de recurso; el valor predeterminado esSTDOUT(navegador).
CURLOPT_INFILE Dirección del archivo que se debe leer al subir archivos; el valor es un tipo de recurso.
CURLOPT_STDERR Establecer una dirección de salida de errores; el valor es un tipo de recurso, que reemplaza el valor predeterminado deSTDERR。
CURLOPT_WRITEHEADER Establecer la dirección del archivo donde se escribe el contenido de la sección de cabecera; el valor es un tipo de recurso.

Para los siguientes parámetros opcionales de estas opciones, el valor debe establecerse como el nombre de una función de devolución de llamada:

Opción OpcionalvalueValor
CURLOPT_HEADERFUNCTION Establecer una función de devolución de llamada con dos parámetros: el primero es el manejador de recurso de cURL y el segundo son los datos de cabecera de salida. La salida de los datos de cabecera debe depender de esta función. Devuelve el tamaño de los datos escritos.
CURLOPT_PASSWDFUNCTION Establecer una función de devolución de llamada con tres parámetros: el primero es el manejador de recurso de cURL, el segundo es un indicador de contraseña y el tercero es la longitud máxima permitida para la contraseña. Devuelve el valor de la contraseña.
CURLOPT_PROGRESSFUNCTION Establecer una función de devolución de llamada con tres parámetros: el primero es el manejador de recurso de cURL, el segundo es un recurso de descriptor de archivo y el tercero es la longitud. Devuelve los datos contenidos.
CURLOPT_READFUNCTION Nombre de la función de callback. Esta función debe aceptar tres parámetros. El primero es un recurso cURL; el segundo es el recurso de flujo (stream) pasado a cURL a través de la opciónCURLOPT_INFILEel recurso de flujo (stream) pasado a cURL; el tercer parámetro es la cantidad máxima de datos que se pueden leer. La función de callback debe devolver una cadena con una longitud menor o igual a la cantidad de datos solicitada (tercer parámetro). Generalmente se lee del recurso de flujo (stream) proporcionado. Devolver una cadena vacía comoEOFseñal de fin de archivo (EOF).
CURLOPT_WRITEFUNCTION Nombre de la función de callback. Esta función debe aceptar dos parámetros. El primero es un recurso cURL; el segundo es la cadena de datos a escribir. Los datos deben guardarse en la función. La función debe devolver exactamente la cantidad de bytes de los datos recibidos para escribir; de lo contrario, la transferencia se interrumpirá con un error.

Valores de retorno

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


Registro de cambios

Versión Descripción
5.2.10 IntroducidoCURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
5.1.0 IntroducidoCURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
5.0.0 IntroducidoCURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.

Ejemplos

Inicializar una nueva sesión cURL y obtener una página web

<?php
// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

//关闭cURL资源,并且释放系统资源
curl_close($ch);
?>

Ejemplo de subida de archivos:

<?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);
?>

La salida del ejemplo anterior es:

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

)


Notas

Al pasar un array a CURLOPT_POSTFIELDS, cURL codificará los datos como multipart/form-data, mientras que al pasar una cadena codificada en URL, los datos se codificarán como application/x-www-form-urlencoded.


PHP Calendar 参考手册Manual de referencia de cURL de PHP

Otras extensiones