English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Manuale di base PHP

Manuale avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Uso e esempio della funzione PHP curl_setopt()

PHP CURL参考手册

(PHP 4 >= 4.0.2, PHP 5)

curl_setopt — imposta un'opzione di trasmissione CURL.

sintassi

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

imposta un'opzione per il gestore di sessione CURL specificato.

parametro

ch

il gestore CURL restituito da curl_init().

opzione

le opzioni CURLOPT_XXX da impostare.

value

imposta il valore su opzione.

Per i parametri opzionali di queste opzioni, il valore dovrebbe essere impostato su un valore booliano:

OpzioneOpzionalevalueValoreNote
CURLOPT_AUTOREFERERquando basato suLocation:durante la reindirizzamento, viene impostato automaticamente l'intestazione headerReferer:informazioni.
CURLOPT_BINARYTRANSFERquando attivatoCURLOPT_RETURNTRANSFERquando, viene restituito l'output nativo (Raw).
CURLOPT_COOKIESESSIONQuando attivato, curl trasmette solo un cookie di sessione, ignorando gli altri cookie. Di default, CURL restituisce tutti i cookie al server. I cookie di sessione sono quei cookie esistenti per determinare se la sessione del server è valida.
CURLOPT_CRLFQuando abilitato, trasforma il carattere di nuova riga Unix in carriage return line feed.
CURLOPT_DNS_USE_GLOBAL_CACHEQuando abilitato, abilita un cache DNS globale, questo è sicuro per i thread e di default abilitato.
CURLOPT_FAILONERRORMostra il codice di stato HTTP, il comportamento predefinito è ignorare le informazioni HTTP con numeri inferiori o uguali a 400.
CURLOPT_FILETIMEQuando abilitato, tenta di modificare le informazioni del documento remoto. Le informazioni di risultato verranno trasmessi attraverso la funzione curl_getinfo().CURLINFO_FILETIMEOpzione di ritorno.            curl_getinfo().
CURLOPT_FOLLOWLOCATIONQuando abilitato, esce con l'informazione restituita dal server"Location: "Restituito ricorsivamente nel header al server, utilizzandoCURLOPT_MAXREDIRSPuò limitare il numero di chiamate ricorsive di ritorno.
CURLOPT_FORBID_REUSEDopo la completazione dell'interazione, rompi il collegamento forzatamente, non riutilizzabile.
CURLOPT_FRESH_CONNECTForza l'ottenimento di una nuova connessione, sostituendo la connessione nella cache.
CURLOPT_FTP_USE_EPRTQuando abilitato, utilizza il comando EPRT (o LPRT) durante il download FTP. Impostato aFALSEDisabilita EPRT e LPRT, utilizza il comando PORT            only.
CURLOPT_FTP_USE_EPSVQuando abilitato, tenta il comando EPSV prima di tornare al modulo PASV durante il trasferimento FTP. Impostato aFALSEDisabilita il comando EPSV.
CURLOPT_FTPAPPENDQuando abilitato, aggiunge alla scrittura del file invece di sovrascriverlo.
CURLOPT_FTPASCIICURLOPT_TRANSFERTEXTAlias.
CURLOPT_FTPLISTONLYQuando abilitato, elenca solo i nomi delle directory FTP.
CURLOPT_HEADERQuando abilitato, esce con le informazioni delle intestazioni come flusso di dati.
CURLINFO_HEADER_OUTQuando abilitato, traccia la stringa di richiesta dell'handler.Disponibile a partire da PHP 5.1.3.CURLINFO_Il prefisso è intenzionale.
CURLOPT_HTTPGETQuando abilitato, imposta il metodo HTTP su GET, poiché GET è il valore predefinito, quindi viene utilizzato solo quando viene modificato.
CURLOPT_HTTPPROXYTUNNELQuando abilitato, trasmette attraverso un proxy HTTP.
CURLOPT_MUTEQuando abilitato, ripristina i valori predefiniti di tutti i parametri modificati delle funzioni CURL.
CURLOPT_NETRCDopo la stabilizzazione della connessione, accedi al file ~/.netrc per ottenere le informazioni sull'utente e la password per connetterti al sito remoto.
CURLOPT_NOBODY启用时将不对HTML中的BODY部分进行输出。
CURLOPT_NOPROGRESS

启用时关闭curl传输的进度条,此项的默认设置为启用。

Note:

PHP自动地设置这个选项为TRUE,这个选项仅仅应当在以调试为目的时被改变。


CURLOPT_NOSIGNAL启用时忽略所有的curl传递给php进行的信号。在SAPI多线程传输时此项被默认启用。CURL 7.10时被加入。
CURLOPT_POST启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
CURLOPT_PUT启用时允许HTTP发送文件,必须同时设置CURLOPT_INFILEeCURLOPT_INFILESIZE.
CURLOPT_RETURNTRANSFER将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
CURLOPT_SSL_VERIFYPEER禁用后CURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录            如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE.自CURL 7.10开始默认为TRUE。从CURL 7.10开始默认绑定安装。
CURLOPT_TRANSFERTEXT启用后对FTP传输使用ASCII模式。对于LDAP,它检索纯文本信息而非HTML。在Windows系统上,系统不会把STDOUT设置成binary模式。
CURLOPT_UNRESTRICTED_AUTH在使用CURLOPT_FOLLOWLOCATION产生的header中的多个locations中持续追加用户名和密码信息,即使域名已发生改变。
CURLOPT_UPLOAD启用后允许文件上传。
CURLOPT_VERBOSE启用时会汇报所有的信息,存放在STDERR或指定的CURLOPT_STDERR中。

对于下面的这些option的可选参数,value应该被设置一个integer类型的值:

OpzioneOpzionalevalueValoreNote
CURLOPT_BUFFERSIZE每次获取的数据中读入缓存的大小,但是不保证这个值每次都会被填满。Aggiunto in CURL 7.10.
CURLOPT_CLOSEPOLICY不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST,还存在另外三个CURLCLOSEPOLICY,但是CURL暂时还不支持。
CURLOPT_CONNECTTIMEOUT在发起连接前等待的时间,如果设置为0,则无限等待。
CURLOPT_CONNECTTIMEOUT_MSil tempo di attesa per il tentativo di connessione, in millisecondi. Se impostato a 0, verrà aspettato indefinitely.aggiunto in CURL 7.16.2. Disponibile da PHP 5.2.3.
CURLOPT_DNS_CACHE_TIMEOUTimpostare il tempo di conservazione delle informazioni DNS nella memoria, il valore predefinito è 120 secondi.
CURLOPT_FTPSSLAUTHIl metodo di autenticazione FTP:CURLFTPAUTH_SSL (prova prima SSL),CURLFTPAUTH_TLS (prova prima TLS) oCURLFTPAUTH_DEFAULT (lascia che CURL decida automaticamente).aggiunto in CURL 7.12.2.
CURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_NONE (valore predefinito, lascia che CURL decida quale versione utilizzare),CURL_HTTP_VERSION_1_0 (utilizzo forzato HTTP/1.0) oCURL_HTTP_VERSION_1_1 (utilizzo forzato HTTP/1.1).
CURLOPT_INFILESIZEimpostare il limite di dimensione del file di upload, in byte (byte).
CURLOPT_LOW_SPEED_LIMITquando la velocità di trasmissione è inferiore aCURLOPT_LOW_SPEED_LIMITin byte/sec, PHP utilizzeràCURLOPT_LOW_SPEED_TIMEper determinare se il trasporto dovrebbe essere annullato per essere troppo lento.
CURLOPT_LOW_SPEED_TIMEquando la velocità di trasmissione è inferiore aCURLOPT_LOW_SPEED_LIMITin byte/sec, PHP utilizzeràCURLOPT_LOW_SPEED_TIMEper determinare se il trasporto dovrebbe essere annullato per essere troppo lento.
CURLOPT_MAXCONNECTSil numero massimo di connessioni permessi, se superato sarà valutato attraversoCURLOPT_CLOSEPOLICYdecidere quali connessioni dovrebbero essere fermate.
CURLOPT_MAXREDIRSspecificare il numero massimo di reindirizzamenti HTTP, questa opzione è correlata aCURLOPT_FOLLOWLOCATIONutilizzati insieme.
CURLOPT_PORTusato per specificare il numero di porta di connessione. (Opzionale)
CURLOPT_PROTOCOLSCURLPROTO_*Il campo bit indica. Se attivato, il valore del campo bit limita quali protocolli sono disponibili durante il trasporto di libcurl. Questo permette di supportare molti protocolli durante la compilazione di libcurl, ma limita l'uso solo a una sottoscrizione degli stessi. Di default, libcurl utilizzerà tutti i protocolli supportati. VediCURLOPT_REDIR_PROTOCOLS.Le opzioni di protocollo disponibili sono: 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_ALLAggiunto in CURL 7.19.4.
CURLOPT_PROTOCOLSCURLPROTO_*Il campo bit indica. Se attivato, il valore del campo bit limita quali protocolli sono disponibili durante il trasporto di libcurl. Questo permette di supportare molti protocolli durante la compilazione di libcurl, ma limita l'uso solo a una sottoscrizione degli stessi. Di default, libcurl utilizzerà tutti i protocolli supportati. VediCURLOPT_REDIR_PROTOCOLS.Le opzioni di protocollo disponibili sono: 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_ALLAggiunto in CURL 7.19.4.
CURLOPT_PROXYAUTHHTTP代理连接的验证方式。使用在CURLOPT_HTTPAUTH中的位域标志来设置相应选项。对于代理验证只有metodi di verifica per la connessione dell'HTTP proxy. Utilizzato inedei bit campi per impostare le opzioni corrispondenti. Per la verifica dell'proxy, soloCURLAUTH_BASICCURLAUTH_NTLM
CURLOPT_PROXYPORTin CURL 7.10.7. Al momento è supportato.CURLOPT_PROXYè possibile impostare. Il porto del server proxy può anche essere impostato in
CURLOPT_PROXYTYPEnonCURLPROXY_HTTP (valore predefinito) èCURLPROXY_SOCKS5.Aggiunto in CURL 7.10.
CURLOPT_REDIR_PROTOCOLSCURLPROTO_*dei campi bit. Se attivato, il campo bit limiterà il thread di trasmissione aCURLOPT_FOLLOWLOCATIONConsentire la seguente delle protocolli quando è attivato il seguente redirect. Questo permetterà di limitare la subset di protocolli permessi durante il redirect. Di default libcurl permetterà tutti i protocolli tranne FILE e SCP. Questo è diverso dalla versione beta 7.19.4 che segue incondizionatamente tutti i protocolli supportati. Per i costanti dei protocolli, si rimanda aCURLOPT_PROTOCOLS.Aggiunto in CURL 7.19.4.
CURLOPT_RESUME_FROMPassare un offset di byte durante il recupero del trasporto (usato per il download da punto di interruzione).
CURLOPT_SSL_VERIFYHOST1 Verifica se esiste un comune nome (common name) nel certificato SSL del server. Note del traduttore: Il comune nome (Common Name) di solito è il dominio (domain) o il sottodominio (sub domain) per il quale stai richiedendo un certificato SSL. 2 Verifica se il comune nome esiste e se corrisponde al nome host fornito.
CURLOPT_SSLVERSIONLa versione di SSL utilizzata (2 o 3). Di default PHP si rileva questo valore, anche se in alcuni casi è necessario impostarlo manualmente.
CURLOPT_TIMECONDITIONSe utilizzato inCURLOPT_TIMEVALUESe è stata modificata dopo un certo tempo specificato, utilizzareCURL_TIMECOND_IFMODSINCERestituire la pagina, se non è stata modificata eCURLOPT_HEADERSe impostato a true, restituire una"304 Not Modified"l'intestazione    CURLOPT_HEADERSe impostato a false, utilizzareCURL_TIMECOND_IFUNMODSINCEcon valore predefinito diCURL_TIMECOND_IFUNMODSINCE.
CURLOPT_TIMEOUTImpostare il numero massimo di secondi che CURL è permesso di eseguire.
CURLOPT_TIMEOUT_MSImpostare il numero massimo di millisecondi che CURL è permesso di eseguire.Aggiunto in CURL 7.16.2. Disponibile a partire da PHP 5.2.3.
CURLOPT_TIMEVALUEImpostare unCURLOPT_TIMECONDITIONL'ora utilizzata come timestamp, per impostazione predefinita utilizzaCURL_TIMECOND_IFMODSINCE.

per questi opzioni opzionali, il valore deve essere impostato come stringa di tipo:

OpzioneOpzionalevalueValoreNote
CURLOPT_CAINFOun file che contiene 1 o più certificati utilizzati per verificare il server. Questo parametro è utilizzato solo quandoCURLOPT_SSL_VERIFYPEER.
CURLOPT_CAPATHuna directory che contiene più certificati CA. Questa opzione ha senso solo quando usata insieme aCURLOPT_SSL_VERIFYPEERutilizzati insieme.
CURLOPT_COOKIEimpostare nel intestazione HTTP della richiesta"Cookie: "parzialmente. I cookie sono separati da un punto e virgola, seguiti da uno spazio (ad esempio, "fruit=apple; colour=red).
CURLOPT_COOKIEFILEIl nome del file che contiene i dati dei cookie, il formato del file dei cookie può essere Netscape o semplicemente informazioni di intestazione HTTP salvate nel file.
CURLOPT_COOKIEJARil file in cui salvare le informazioni dei cookie dopo la connessione.
CURLOPT_CUSTOMREQUEST

usare un messaggio di richiesta personalizzato al posto di"GET"o"HEAD"come richiesta HTTP. Questo è utile per eseguire"DELETE" o altre richieste HTTP più nascoste. Valori validi come"GET","POST","CONNECT"ecc. Questo significa che non dovresti inserire qui l'intera richiesta HTTP. Ad esempio, inserisci"GET /index.html HTTP/1.0\r\n\r\n"è errato.

Note:

Non utilizzarlo prima di determinare che il server supporta questo metodo di richiesta personalizzato.


CURLOPT_EGDSOCKETSimileCURLOPT_RANDOM_FILE, eccetto un socket del Demone di Raccolta Entropia.
CURLOPT_ENCODINGnel intestazione HTTP della richiesta"Accept-Encoding: "i valori. Le codifiche supportate includono"identity","deflate"e"gzip". Se è una stringa vuota"", invierà tutte le tipologie di codifica supportate.Aggiunto in CURL 7.10.
CURLOPT_FTPPORTQuesto valore verrà utilizzato per ottenere l'indirizzo IP necessario per l'istruzione "POST" FTP. L'istruzione "POST" informa il server remoto di connettersi all'indirizzo IP specificato. Questa stringa può essere un indirizzo IP testuale, un nome host, un nome di interfaccia di rete (sotto UNIX) o semplicemente un "-" per utilizzare l'indirizzo IP predefinito.
CURLOPT_INTERFACEIl nome dell'interfaccia di rete inviata, può essere un nome di interfaccia, un indirizzo IP o un nome di host.
CURLOPT_KRB4LEVELIl livello di sicurezza KRB4 (Kerberos 4). Tutti i seguenti valori sono validi (in ordine crescente):"clear""safe""confidential""private".. Se la stringa non corrisponde a queste, verrà utilizzato"private". Questa opzione viene impostata aNULLViene disabilitato l'autenticazione KRB4 sicura. Al momento l'autenticazione KRB4 sicura può essere utilizzata solo per il trasporto FTP.
CURLOPT_POSTFIELDSTutti i dati vengono inviati utilizzando l'operazione "POST" del protocollo HTTP. Per inviare file, aggiungere@Prefisso e utilizzare il percorso completo. Questo parametro può essere rappresentato come una stringa url-encoded simile a'para1=val1¶2=val2&...O utilizzare un array con il nome del campo come chiave e i dati del campo come valore. SevalueÈ un array,Content-TypeL'intestazione verrà impostata amultipart/form-data.
CURLOPT_PROXYCanale di proxy HTTP.
CURLOPT_PROXYUSERPWDUn nome utilizzato per connettersi a un proxy."[username]:[password]"Una stringa di formato.
CURLOPT_RANDOM_FILEUn nome di file utilizzato per generare il seme casuale SSL.
CURLOPT_RANGECon"X-Y"Forma, dove X e Y sono opzionali per ottenere l'intervallo di dati, in byte. La thread di trasmissione HTTP supporta anche alcuni duplicati consecutivi separati da virgole come"X-Y,N-M".
CURLOPT_REFERERNella intestazione della richiesta HTTP"Referer: "Il contenuto.
CURLOPT_SSL_CIPHER_LISTUna lista di algoritmi di crittografia SSL. Ad esempioRC4-SHAeTLSv1Sono disponibili liste di crittografia.
CURLOPT_SSLCERTUn nome di file che contiene un certificato PEM.
CURLOPT_SSLCERTPASSWDUtilizzareCURLOPT_SSLCERTLa password necessaria per il certificato.
CURLOPT_SSLCERTTYPEIl tipo del certificato. I formati supportati includono"PEM" (Valore predefinito), "DER"e"ENG".Aggiunto in CURL 7.9.3.
CURLOPT_SSLENGINEUsato perCURLOPT_SSLKEY中指定的SSL私钥的加密引擎变量。
La variabile dell'engine di crittografia della chiave privata SSL specificata inCURLOPT_SSLENGINE_DEFAULT
CURLOPT_SSLKEYVariabile utilizzata per operazioni di crittografia asimmetrica.
Il nome del file che contiene la chiave privata SSL.

CURLOPT_SSLKEYPASSWDCURLOPT_SSLKEYla password del chiave privata SSL specificata in

Note:

Poiché questa opzione contiene informazioni sensibili sulla password, ricorda di garantire la sicurezza di questo script PHP.


CURLOPT_SSLKEYTYPECURLOPT_SSLKEYil tipo di crittografia del chiave privata specificato in"PEM"(valore predefinito),"DER"e"ENG".
CURLOPT_URLindirizzo URL da ottenere, può anche essere impostato nella funzione curl_init().
CURLOPT_USERAGENTIncludi un"User-Agent: "stringa dell'intestazione.
CURLOPT_USERPWDPassa un nome utente e una password necessari per la connessione, nel formato:"[username]:[password]".

Per i parametri opzionali di queste opzioni, il valore deve essere impostato come un array:

OpzioneOpzionalevalueValoreNote
CURLOPT_HTTP200ALIASESArray di codici di risposta 200, i codici di risposta nell'array sono considerati come risposte corrette, altrimenti sono considerati come risposte errate.Aggiunto in CURL 7.10.3.
CURLOPT_HTTPHEADERUn array utilizzato per impostare i campi dell'intestazione HTTP. Imposta l'array come segue:                       array('Content-type: text/plain', 'Content-length: 100')
CURLOPT_POSTQUOTEUn insieme di comandi FTP eseguiti sul server dopo l'esecuzione della richiesta FTP.
CURLOPT_QUOTEUn insieme di comandi FTP eseguiti sul server prima della richiesta FTP.

Per i parametri opzionali di queste opzioni, il valore deve essere impostato come una risorsa di flusso (ad esempio usando fopen()):

OpzioneOpzionalevalueValore
CURLOPT_FILEImposta la posizione del file di output, il valore è un tipo di risorsa, il valore predefinito èSTDOUT (browser).
CURLOPT_INFILEL'indirizzo del file da leggere durante l'upload del file, il valore è un tipo di risorsa.
CURLOPT_STDERRImposta un indirizzo di output degli errori, il valore è un tipo di risorsa, sostituendo il valore predefinitoSTDERR.
CURLOPT_WRITEHEADERImposta l'indirizzo del file di scrittura del contenuto dell'intestazione, il valore è un tipo di risorsa.

Per i parametri opzionali di queste opzioni, il valore deve essere impostato come il nome di una funzione di callback:

OpzioneOpzionalevalueValore
CURLOPT_HEADERFUNCTIONImposta una funzione di callback con due parametri, il primo è l'handle della risorsa CURL, il secondo sono i dati di header di output. L'output dei dati di header deve dipendere da questa funzione, restituire la dimensione dei dati scritti.
CURLOPT_PASSWDFUNCTIONImposta una funzione di callback con tre parametri, il primo è l'handle della risorsa CURL, il secondo è il prompt della password, il terzo parametro è la lunghezza massima consentita per la password. Restituisce il valore della password.
CURLOPT_PROGRESSFUNCTIONImposta una funzione di callback con tre parametri, il primo è l'handle della risorsa CURL, il secondo è la risorsa del descrittore di file, il terzo è la lunghezza. Restituisce i dati contenuti.
CURLOPT_READFUNCTIONNome della funzione di callback. Questa funzione deve accettare tre parametri. Il primo è la risorsa CURL; il secondo è il parametro passato tramite l'opzione CURLOPT_INFILE La risorsa di stream passata a CURL; il terzo parametro è la quantità massima di dati che possono essere letti. La La funzione di callback deve restituire una stringa, la cui lunghezza non deve superare la quantità di dati richiesta (terzo parametro). Di solito si legge dallo stream Lettura delle risorse. Restituisce una stringa vuota come EOFSegnale di fine del file (EOF).
CURLOPT_WRITEFUNCTIONNome della funzione di callback. Questa funzione deve accettare due parametri. Il primo è la risorsa CURL; il secondo è la stringa di dati da scrivere. La Le informazioni devono essere salvate all'interno della funzione. La funzione deve restituire il numero esatto di byte da scrivere, altrimenti la trasmissione sarà interrotta da un errore. Interruzione.

Valore di ritorno

Restituisce TRUE se successo, FALSE in caso di fallimento.

Log delle modifiche

VersioneSpiegazione
5.2.10Introduzione CURLOPT_PROTOCOLS, andCURLOPT_REDIR_PROTOCOLS.
5.1.0Introduzione CURLOPT_AUTOREFERER,CURLOPT_BINARYTRANSFER,CURLOPT_FTPSSLAUTH,CURLOPT_PROXYAUTH, andCURLOPT_TIMECONDITION.
5.0.0Introduzione CURLOPT_FTP_USE_EPRT,CURLOPT_NOSIGNAL,CURLOPT_UNRESTRICTED_AUTH,CURLOPT_BUFFERSIZE,CURLOPT_HTTPAUTH,CURLOPT_PROXYPORT,CURLOPT_PROXYTYPE,CURLOPT_SSLCERTTYPE, andCURLOPT_HTTP200ALIASES.

在线示例

初始化一个新的CURL会话并获取一个网页

<?php
// 创建一个新CURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://it.oldtoolbag.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// 抓取URL并把它传递给浏览器
curl_exec($ch);
//关闭CURL资源,并且释放系统资源
curl_close($ch);
?>

上传文件示例:

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

以上示例输出结果如下:

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

注释

传递一个数组到CURLOPT_POSTFIELDS,CURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。

PHP CURL参考手册