curl_setopt_array
curl_version
Fonctions cURL
PHP Manual

# curl_setopt

(PHP 4 >= 4.0.2, PHP 5)

curl_setopt — Définit une option de transmission cURL

### Description

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

Définit une option de transfert cURL.

### Liste de paramètres

`ch`

  Un gestionnaire cURL retourné par la fonction curl_init().

`option`

  L'option CURLOPT_XXX à définir.

`value`

  La valeur à définir pour `option` .

  `value` doit être un booléen pour les valeurs suivantes du paramètres `option` :

  Option | Définissez le paramètre `value` à | Notes
  --- | --- | ---
  `CURLOPT_AUTOREFERER` | `TRUE` pour spécifier automatiquement le champ Referer: dans les requêtes où une redirection Location: suit. | Disponible depuis PHP 5.1.0.
  `CURLOPT_BINARYTRANSFER` | `TRUE` pour retourner la ligne affichée lorsque `CURLOPT_RETURNTRANSFER` est utilisé. |

  `CURLOPT_COOKIESESSION`

  `TRUE` pour marquer ceci comme un nouveau cookie "session". Cela forcera libcurl à ignorer tous les cookies qui sont prêts à être chargés qui sont des "cookies de session" provenant des sessions antérieures. Par défaut, libcurl enregistre et charge toujours tous les cookies, indépendamment s'ils sont des cookies de session ou pas. Les cookies de session sont des cookies sans date d'expiration et existeront que pour cette "session" seulement.

  Disponible depuis PHP 5.1.0.

  `CURLOPT_CRLF` | `TRUE` pour convertir les nouvelles lignes Unix en nouvelles lignes CRLF pendant le transfert. |
  `CURLOPT_DNS_USE_GLOBAL_CACHE` | `TRUE` pour utiliser un cache DNS global. Cette option n'est pas thread-safe et est activée par défaut. |
  `CURLOPT_FAILONERROR` | `TRUE` pour que PHP traite silencieusement les codes HTTP supérieurs ou égaux à 400. Le comportement par défaut est de retourner la page normalement, en ignorant ce code. |
  `CURLOPT_FILETIME` | `TRUE` pour tenter de récupérer la date de modification du document distant. Vous pouvez également retrouver cette valeur en utilisant l'option `CURLINFO_FILETIME` avec curl_getinfo(). |
  `CURLOPT_FOLLOWLOCATION` | `TRUE` pour suivre toutes les en-têtes "Location: " que le serveur envoie dans les en-têtes HTTP (notez que cette fonction est récursive et que PHP suivra toutes les en-têtes "Location: " qu'il trouvera à moins que `CURLOPT_MAXREDIRS` ne soit définie). |
  `CURLOPT_FORBID_REUSE` | `TRUE` pour forcer la connexion à se fermer explicitement lorsque le processus est terminé et ne sera pas mise en cache pour être réutilisée. |
  `CURLOPT_FRESH_CONNECT` | `TRUE` pour forcer à utiliser une nouvelle connexion au lieu de celle en cache. |
  `CURLOPT_FTP_USE_EPRT` | `TRUE` pour utiliser EPRT (et LPRT) lors de l'activation des téléchargements FTP. Utilisez `FALSE` pour désactiver EPRT et LPRT et ainsi, n'utiliser que PORT. | Ajouté en PHP 5.0.0.
  `CURLOPT_FTP_USE_EPSV` | `TRUE` pour tenter tout d'abord une commande EPSV pour les transferts FTP avant de revenir à une commande PASV. Définissez cette option à `FALSE` pour désactiver EPSV. |
  `CURLOPT_FTPAPPEND` | `TRUE` pour que PHP concatène le fichier distant, plutôt que de l'écraser. |
  `CURLOPT_FTPASCII` | Un alias de `CURLOPT_TRANSFERTEXT`. Utilisez celui-là à la place. |
  `CURLOPT_FTPLISTONLY` | `TRUE` pour ne lister que les noms d'un dossier FTP. |
  `CURLOPT_HEADER` | `TRUE` pour inclure l'en-tête dans la valeur de retour. |
  `CURLOPT_HTTPGET` | `TRUE` pour réinitialiser la méthode de requête HTTP à POST. Sachant que GET est la valeur par défaut, cela n'est uniquement nécessaire que si la méthode de requête a été changée. |
  `CURLOPT_HTTPPROXYTUNNEL` | `TRUE` pour effectuer un tunnel à travers un proxy HTTP. |
  `CURLOPT_MUTE` | `TRUE` pour que PHP soit totalement silencieux concernant toutes les fonctions cURL. |
  `CURLOPT_NETRC` | `TRUE` pour que PHP analyse votre fichier ~./netrc et utilise votre nom de compte et mot de passe sur le site distant que vous souhaitez contacter. |
  `CURLOPT_NOBODY` | `TRUE` pour que le corps du transfert ne soit pas inclus dans la valeur de retour. |

  `CURLOPT_NOPROGRESS`

  `TRUE` pour désactiver la barre de progression des transferts cURL.

  > Note: PHP définit automatiquement cette option à `TRUE`. Ne changez cette valeur que le temps du déboguage.

  `CURLOPT_NOSIGNAL` | `TRUE` pour ignorer toutes les fonctions cURL qui cause l'envoi d'un signal au processus PHP. Activée par défaut dans les SAPI multithreadés, les options d'expiration peut toujours être utilisées. | Ajouté dans cURL 7.10 et PHP 5.0.0.
  `CURLOPT_POST` | `TRUE` pour que PHP fasse un HTTP POST. Un POST est un encodage normal application/x-www-from-urlencoded, utilisé couramment par les formulaires HTML. |
  `CURLOPT_PUT` | `TRUE` pour que le chargement se fasse par HTTP PUT. Le fichier à charger doit être fixé avec les options `CURLOPT_INFILE` et `CURLOPT_INFILESIZE`. |
  `CURLOPT_RETURNTRANSFER` | `TRUE` retourne directement le transfert sous forme de chaîne de la valeur retournée par curl_exec() au lieu de l'afficher directement. |

  `CURLOPT_SSL_VERIFYPEER`

  `FALSE` pour arrêter CURL de vérifier le certificat. Les certificats alternatifs peuvent être spécifiés avec l'option `CURLOPT_CAINFO` (ajouté dans CURL 7.9.8) ou un répertoire de certificat peut être spécifié avec l'option `CURLOPT_CAPATH` . Tout comme CURL 7.10, CURL installe un paquet par défaut. `CURLOPT_SSL_VERIFYHOST` doit aussi être positionnée à 1 ou 0 si `CURLOPT_SSL_VERIFYPEER` est désactivée (par défaut à 2).

  `TRUE` par défaut depuis cURL 7.10. Paquet installé par défaut depuis cURL 7.10.

  `CURLOPT_TRANSFERTEXT` | `TRUE` pour utiliser le mode ASCII pour les transferts FTP. Pour LDAP, il récupère les données en texte plein au lieu d'Html. Sur les systèmes WIndows, STDOUT ne sera pas définie en mode binaire. |
  `CURLOPT_UNRESTRICTED_AUTH` | `TRUE` pour garder l'envoi du nom de l'utilisateur ainsi que le mot de passe lorsque l'on suit les chemins (en utilisant `CURLOPT_FOLLOWLOCATION` ), même si le nom d'hôte change. | Ajouté en PHP 5.0.0.
  `CURLOPT_UPLOAD` | `TRUE` pour que PHP prépare un chargement. |
  `CURLOPT_VERBOSE` | `TRUE` pour afficher tous les événements. Écrit la sortie sur stderr ou dans le fichier spécifié en utilisant `CURLOPT_STDERR` . |

  `value` doit être un entier pour les valeurs suivantes du paramètres `option` :

  Option | Définissez le paramètre `value` à | Notes
  --- | --- | ---
  `CURLOPT_BUFFERSIZE` | La taille du buffer à utiliser pour chaque lecture. Cependant, il n'y a aucune garantie que cette requête soit accomplie. | Ajouté en cURL 7.10 et PHP 5.0.0.
  `CURLOPT_CLOSEPOLICY` | Soit `CURLCLOSEPOLICY_LEAST_RECENTLY_USED` , soit `CURLCLOSEPOLICY_OLDEST` . Il y a trois autres constantes `CURLCLOSEPOLICY_` mais CURL ne les supporte pas encore. |
  `CURLOPT_CONNECTTIMEOUT` | Le nombre de secondes à attendre durant la tentative de connexion. Utilisez 0 pour attendre indéfiniment. |
  `CURLOPT_DNS_CACHE_TIMEOUT` | Le temps en seconde que CURL doit conserver les entrées DNS en mémoire. Cette option est définie à 120 secondes (2 minutes) par défaut. |
  `CURLOPT_FTPSSLAUTH` | La méthode d'identification FTP, lorsqu'elle est activée : CURLFTPAUTH_SSL (tente SSL en premier), CURLFTPAUTH_TLS (tente TLS en premier) ou CURLFTPAUTH_DEFAULT (laisse cURL décider). | Ajouté en cURL 7.12.2 et PHP 5.1.0.
  `CURLOPT_HTTP_VERSION` | `CURL_HTTP_VERSION_NONE` (défaut, laisse cURL décider la version à utiliser), `CURL_HTTP_VERSION_1_0` (force HTTP/1.0), ou `CURL_HTTP_VERSION_1_1` (force HTTP/1.1). |

  `CURLOPT_HTTPAUTH`

  La méthode d'identification HTTP à utiliser. Ces options sont : `CURLAUTH_BASIC` , `CURLAUTH_DIGEST` , `CURLAUTH_GSSNEGOTIATE` , `CURLAUTH_NTLM` , `CURLAUTH_ANY` et `CURLAUTH_ANYSAFE` .

  Vous pouvez utiliser le séparateur | ou un opérateur pour combiner plus d'une méthode. Si vous faites cela, CURL interrogera le serveur pour voir quelles sont les méthodes supportées et prendra la meilleur.

  `CURLAUTH_ANY` est un alias pour CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

  `CURLAUTH_ANYSAFE` est un alias pour CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

  Ajouté en PHP 5.0.0.

  `CURLOPT_INFILESIZE` | La taille attendue, en octets, du fichier lors du téléchargement d'un fichier depuis un site distant. |
  `CURLOPT_LOW_SPEED_LIMIT` | La vitesse de transfert minimale en octets par secondes en dessous de laquelle, et pendant `CURLOPT_LOW_SPEED_TIME` secondes, PHP considérera qu'elle est trop lente, et annulera le transfert. |
  `CURLOPT_LOW_SPEED_TIME` | Le temps en secondes, qui, si la vitesse de transfert reste en dessous de `CURLOPT_LOW_SPEED_LIMIT`, PHP considérera que la connexion est trop lente, et l'annulera. |
  `CURLOPT_MAXCONNECTS` | Le nombre maximal de connexions persistantes autorisées. Lorsque la limite est atteinte, l'option `CURLOPT_CLOSEPOLICY` est utilisé pour afficher les connexions fermées. |
  `CURLOPT_MAXREDIRS` | Le nombre maximal de redirections HTTP à suivre. Utilisez cette option avec l'option `CURLOPT_FOLLOWLOCATION` . |
  `CURLOPT_PORT` | Le numéro du port de connexion, à la place de la valeur par défaut utilisée par le protocole. |
  `CURLOPT_PROXYAUTH` | La méthode d'identification HTTP à utiliser pour la connexion à un proxy. Utilisez la même méthode que celle décrite dans `CURLOPT_HTTPAUTH`. Pour une identification avec un proxy, seuls `CURLAUTH_BASIC` et `CURLAUTH_NTLM` sont actuellement supportés. | Ajouté en CURL 7.10.7 et PHP 5.1.0.
  `CURLOPT_PROXYPORT` | Le numéro du port du proxy à utiliser pour la connexion. Ce numéro de port peut également être défini dans l'option `CURLOPT_PROXY` . | Ajouté en PHP 5.0.0.
  `CURLOPT_PROXYTYPE` | Soit `CURLPROXY_HTTP` (par défaut), soit `CURLPROXY_SOCKS5` . | Ajouté en cURL 7.10 et PHP 5.0.0.
  `CURLOPT_RESUME_FROM` | L'offset, en octets, à partir duquel vous voulez commencer le transfert. |
  `CURLOPT_SSL_VERIFYHOST` | 1 pour vérifier l'existence d'un nom commun dans le certificat SSL. 2 pour vérifier l'existence d'un nom commun et vérifier qu'il correspond avec le nom d'hôte fourni. |
  `CURLOPT_SSLVERSION` | La version de SSL (2 ou 3) à utiliser. Par défaut, PHP essayera de le déterminer lui-même, bien que dans certains cas, il vous faudra le faire manuellement. |

  `CURLOPT_TIMECONDITION`

  Comment `CURLOPT_TIMEVALUE` est traité. Utilisez `CURL_TIMECOND_IFMODSINCE` pour retourner la page uniquement si elle a été modifiée depuis le temps spécifié par `CURLOPT_TIMEVALUE`. Si elle n'a pas été modifiée, un en-tête HTTP "304 Not Modified" sera retourné en supposant que `CURLOPT_HEADER` vaut `TRUE`. Utilisez `CURL_TIMECOND_ISUNMODSINCE` pour faire l'inverse. `CURL_TIMECOND_IFMODSINCE` est par défaut.

  Ajouté en PHP 5.1.0.

  `CURLOPT_TIMEOUT` | Le temps maximum d'exécution de la fonction cURL. |
  `CURLOPT_TIMEVALUE` | Le temps en secondes depuis le 1er janvier 1970. Cette valeur sera utilisée comme spécifié dans l'option `CURLOPT_TIMECONDITION`. Par défaut, `CURL_TIMECOND_IFMODSINCE` sera utilisée. |

  `value` doit être une chaîne pour les valeurs suivantes du paramètres `option` :

  Option | Définissez le paramètre `value` à | Notes
  --- | --- | ---
  `CURLOPT_CAINFO` | Le nom d'un fichier contenant un ou plusieurs certificats pour vérifier la concordance. Cela n'a de sens que si vous l'utilisez en combinaison de l'option `CURLOPT_SSL_VERIFYPEER` . |
  `CURLOPT_CAPATH` | Un dossier qui contient les certificats. Utilisez cette option avec l'option `CURLOPT_SSL_VERIFYPEER` . |
  `CURLOPT_COOKIE` | Le contenu de l'en-tête "Set-Cookie: ", à transmettre dans l'en-tête HTTP. |
  `CURLOPT_COOKIEFILE` | Le nom du fichier contenant les données de cookie. Le fichier de cookie peut être au format Netscape, ou simplement des en-têtes HTTP écrits dans un fichier. |
  `CURLOPT_COOKIEJAR` | Le nom de fichier pour y sauvegarder tous les cookies internes lorsque la connexion se ferme. |

  `CURLOPT_CUSTOMREQUEST`

  Une méthode de requête qui sera utilisée à la place de "GET" ou "HEAD" lors des requêtes HTTP. Cette commande est pratique pour effectuer un "DELETE" ou une autre commande HTTP exotique. Les valeurs valides sont "GET", "POST", "CONNECT" et plus ; i.e. n'entrez pas une requête HTTP ici. Pour le moment, entrez "GET /index.html HTTP/1.0\r\n\r\n" serait incorrect.

  > Note: N'utilisez pas cette commande sans vous assurer que le serveur l'accepte.

  `CURLOPT_EGDSOCKET` | Comme `CURLOPT_RANDOM_FILE` excepté que vous passez une chaîne qui contient un nom de fichier vers le socket Entropy Gathering Daemon. |
  `CURLOPT_ENCODING` | Le contenu des en-têtes "Accept-Encoding: " et active le décodage de la réponse. Les encodages supportés sont "identity", "deflate" et "gzip". Si une chaîne vide "" est utilisé, un en-tête contenant tous les types d'encodage supportés est envoyé. | Ajouté en cURL 7.10.
  `CURLOPT_FTPPORT` | La valeur qui sera utilisée pour récupérer l'adresse IP utilisée pour l'instruction FTP "PORT". L'instruction POST indique au serveur distant de se connecter à cette adresse IP. La chaîne peut être une adresse IP, un nom d'hôte, un nom d'interface réseau (sous UNIX), ou juste '-', pour utiliser les IP par défaut du système. |
  `CURLOPT_INTERFACE` | Le nom de l'interface à utiliser. Cela peut être le nom d'une interface, une adresse IP ou encore le nom de l'hôte. |

  `CURLOPT_KRB4LEVEL`

  Le degré de sécurité KRB4 (Kerberos 4). Chacune des valeurs (dans l'ordre du plus petit au plus grand) suivantes sont valides : "clear", "safe", "confidential", "private".. Si la chaîne passée ne correspond pas à une de ces valeurs, la valeur "private" sera définie. Positionner cette valeur à `NULL` revient à désactiver la sécurité KRB4. Actuellement, la sécurité KRB4 fonctionne uniquement avec les transaction FTP.

  `CURLOPT_POSTFIELDS` | Toutes les données à passer lors d'une opération de HTTP POST. Pour envoyer un fichier, préfixez le nom du fichier avec un @ et utilisez le chemin complet. |
  `CURLOPT_PROXY` | Le nom du proxy HTTP au tunnel qui le demande. |
  `CURLOPT_PROXYUSERPWD` | Un nom d'utilisateur et un mot de passe formatés sous la forme "[username]:[password]" à utiliser pour la connexion avec le proxy. |
  `CURLOPT_RANDOM_FILE` | Un nom de fichier à utiliser pour interroger le générateur de nombre aléatoire pour SSL. |
  `CURLOPT_RANGE` | La plage de valeurs à récupérer sous la forme "X-Y", où les valeurs de X ou Y peuvent être omises. Le transfert HTTP supporte aussi plusieurs intervalles, séparés par des virgules : "X-Y,N-M". |
  `CURLOPT_REFERER` | Le contenu de l'en-tête "Referer: " à utiliser dans une requête HTTP. |
  `CURLOPT_SSL_CIPHER_LIST` | Une liste de chiffrements à utiliser avec SSL. Par exemple, RC4-SHA et TLSv1 sont des listes valides de chiffrements. |
  `CURLOPT_SSLCERT` | Le nom de fichier du certificat, au format PEM. |
  `CURLOPT_SSLCERTPASSWD` | Le mot de passe nécessaire pour utiliser le certificat `CURLOPT_SSLCERT`. |
  `CURLOPT_SSLCERTTYPE` | Le format de votre certificat. Les formats supportés sont "PEM" (par défaut), "DER", et "ENG". | Ajouté en cURL 7.9.3 et PHP 5.0.0.
  `CURLOPT_SSLENGINE` | L'identifiant pour le moteur de chiffrement de votre clé privée spécifié dans `CURLOPT_SSLKEY`. |
  `CURLOPT_SSLENGINE_DEFAULT` | L'identifiant pour le moteur de chiffrement utilisé pour les opérations de chiffrement asymétrique. |
  `CURLOPT_SSLKEY` | Un nom de fichier contenant votre clé privée SSL. |

  `CURLOPT_SSLKEYPASSWD`

  Le mot de passe secret utilisé par votre clé SSL privée spécifié dans `CURLOPT_SSLKEY`.

  > Note: Du fait que cette option contient un mot de passe sensible, souvenez-vous de conserver le script PHP qui le contient en toute sécurité.

  `CURLOPT_SSLKEYTYPE` | Le type de votre clé SSL privée spécifié dans `CURLOPT_SSLKEY`. Les types de clés supportés sont "PEM" (défaut), "DER", et "ENG". |
  `CURLOPT_URL` | L'URL à récupérer. Vous pouvez aussi choisir cette valeur lors de l'appel à curl_init(). |
  `CURLOPT_USERAGENT` | Le contenu de l'en-tête "User-Agent: " à utiliser dans une requête HTTP. |
  `CURLOPT_USERPWD` | Un nom d'utilisateur et un mot de passe formatés sous la forme "[username]:[password]" à utiliser pour la connexion. |

  `value` doit être un tableau pour les valeurs suivantes du paramètres `option` :

  Option | Définissez le paramètre `value` à | Notes
  --- | --- | ---
  `CURLOPT_HTTP200ALIASES` | Un tableau de réponses HTTP 200 qui sera traité comme réponses valides et non comme des erreurs. | Ajouté en CURL 7.10.3 et PHP 5.0.0.
  `CURLOPT_HTTPHEADER` | Un tableau de champs d'en-têtes HTTP à définir. |
  `CURLOPT_POSTQUOTE` | Un tableau de commandes FTP à exécuter sur le serveur après que la requête FTP se soit exécutée. |
  `CURLOPT_QUOTE` | Un tableau de commande FTP à exécuter sur le serveur avant la requête FTP. |

  `value` doit être une ressource (utilisant fopen(), par exemple) pour les valeurs suivantes du paramètre `option` :

  Option | Définissez le paramètre `value` à | Notes
  --- | --- | ---
  `CURLOPT_FILE` | Le fichier où sera écrit le transfert. Par défaut, STDOUT (la fenêtre du navigateur). |
  `CURLOPT_INFILE` | Le fichier lu par le transfert lors du chargement. |
  `CURLOPT_STDERR` | Un chemin alternatif à utiliser pour afficher les erreurs au lieu de STDERR. |
  `CURLOPT_WRITEHEADER` | Le fichier où sera écrit les parties d'en-tête du transfert. |

  `value` doit être une chaîne de caractères qui sera un nom valide de fonction de rappel pour les valeurs suivantes du paramètre `option` :

  Option | Définissez le paramètre `value` à | Notes
  --- | --- | ---
  `CURLOPT_HEADERFUNCTION` | Le nom d'une fonction de rappel qui prend deux paramètres. Le premier est la ressource CURL, le second, une chaîne contenant les données de l'en-tête à écrire. En utilisant cette fonction de rappel, il est de votre responsabilité de l'écriture des données de l'en-tête. Retourne le nombre d'octets écrits. |
  `CURLOPT_PASSWDFUNCTION` | Le nom d'une fonction de rappel qui prend trois paramètres. Le premier est la ressource CURL, le second, une chaîne contenant un mot de passe de prompt et le troisième, est la longueur maximale du mot de passe. Retourne une chaîne contenant le mot de passe. |
  `CURLOPT_READFUNCTION` | Le nom d'une fonction de rappel où la fonction de rappel prend deux paramètres. Le premier est la ressource CURL et le second, une chaîne contenant les données à lire. En utilisant cette fonction de rappel, il devient de votre responsabilité de lire les données. Retourne le nombre d'octets lus. Retourne 0 à un signal EOF. |
  `CURLOPT_WRITEFUNCTION` | Le nom d'une fonction de rappel où la fonction de rappel prend deux paramètres. Le premier est la ressource CURL et le second, une chaîne contenant les données à écrire. En utilisant cette fonction de rappel, il devient de votre responsabilité d'écrire les données. Doit retourner le nombre exact d'octets écrits ou il échouera. |

### Valeurs de retour

Cette fonction retourne `TRUE` en cas de succès, `FALSE` en cas d'échec.

### Exemples

Exemple #1 Initialisation d'une nouvelle session CURL et recherche d'une page Web

`<?php
// Création d'une ressource cURL
$ch = curl_init();
// Définition de l'URL et autres options appropriées
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// Récupération de l'URL et passage au navigateur
curl_exec($ch);
// Fermeture de la ressource cURL et libération des ressources systèmes
curl_close($ch);
?>`

Exemple #2 Télécharger un fichier sur un serveur

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

L'exemple ci-dessus va afficher :

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

    )

### Voir aussi

- curl_setopt_array()

curl_setopt_array
curl_version
Fonctions cURL
PHP Manual