curl_setopt_array
curl_version
Funções da cURL
PHP Manual

# curl_setopt

(PHP 4 >= 4.0.2, PHP 5)

curl_setopt — Define uma opção para a transferencia cURL

### Descrição

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

Define uma opção para o manipulador de sessão cURL indicado.

### Parâmetros

`ch`

  Um manipulador cURL retornado por curl_init().

`option`

  A CURLOPT_XXX opção a definir.

`value`

  O valor a ser definido em `option`.

  `value` deve ser um booleano para os seguintes valores do parâmetro `option`:

  Opção | Definir `value` para | Notas
  --- | --- | ---
  `CURLOPT_AUTOREFERER` | `TRUE` para definir automaticamente um campo Referer: nas requisições aonde ele segue um redirecionamento Location:. | Disponível desde PHP 5.1.0.
  `CURLOPT_BINARYTRANSFER` | `TRUE` para retornar a saída crua quando `CURLOPT_RETURNTRANSFER` é usado. |

  `CURLOPT_COOKIESESSION`

  `TRUE` para marcar este como um novo cookie de sessão. Ela irá forçar a libcurl a ignorar todos os cookies que esteja a ponto de carregar que sejam "cookies de sessão" da sessão anterior. Por padrão, libcurl sempre salva e carrega todos os cookies, independente se sejam cookies de sessão ou não. Cookies de sessão são cookies sem data de expiração o que significa que devem estar vivos e existir apenas para essa sesão apenas.

  Disponível desde PHP 5.1.0.

  `CURLOPT_CRLF` | `TRUE` para converter finais de linha Unix para finais de linha CRLF nas transferencias. |
  `CURLOPT_DNS_USE_GLOBAL_CACHE` | `TRUE` para usar um cache de DNS global. Esta opção não é thread-safe e esta ativada por padrão. |
  `CURLOPT_FAILONERROR` | `TRUE` para falhar silenciosamente se o codigo HTTP retornado for maior ou igual a 400. O funcionamento padrão é retornar a pagina normalmente, ignorando o codigo. |
  `CURLOPT_FILETIME` | `TRUE` para tentar obter a data de modificação do documento remoto. Este valor pode ser obtido usando a opção `CURLINFO_FILETIME` com curl_getinfo(). |
  `CURLOPT_FOLLOWLOCATION` | `TRUE` para seguir qualquer cabeçalho "Location: " que o servidor envie como parte do cabeçalho HTTP (note que isto é recursivo, PHP irá seguir tantos cabeçalhos "Location: " quantos sejam enviados, a menos que `CURLOPT_MAXREDIRS` seja definido). |
  `CURLOPT_FORBID_REUSE` | `TRUE` para forçar a conexão ser fechada explicitamente quando o processamento seja terminado, e não ser guardada para reuso. |
  `CURLOPT_FRESH_CONNECT` | `TRUE` para forçar o uso de uma nova conexão ao invés de uma guardada em cache. |
  `CURLOPT_FTP_USE_EPRT` | `TRUE` para usar EPRT (e LPRT) ao fazer downloads FTP ativos. Use `FALSE` para desabilitar EPRT e LPRT e usar apenas PORT. | Adicionado no PHP 5.0.0.
  `CURLOPT_FTP_USE_EPSV` | `TRUE` para tentar primeiro um comando EPSV pára transferencias FTP antes de reverter de volta para PASV. Defina como `FALSE` para desabilitar EPSV. |
  `CURLOPT_FTPAPPEND` | `TRUE` para adicionar ao arquivo remoto ao invés de sobrescreve-lo. |
  `CURLOPT_FTPASCII` | um apelido para `CURLOPT_TRANSFERTEXT`. Use aquela ao invés. |
  `CURLOPT_FTPLISTONLY` | `TRUE` para listar apenas os nomes de um diretório FTP. |
  `CURLOPT_HEADER` | `TRUE` para incluir o cabeçalho na saída. |
  `CURLOPT_HTTPGET` | `TRUE` para redefinir o metodo de solicitação HTTP para GET. já que GET é o padrão, isto apenas é necessário se o metodo de solicitação foi modificado. |
  `CURLOPT_HTTPPROXYTUNNEL` | `TRUE` para fazer tunel através de um servidor HTTP proxy indicado. |
  `CURLOPT_MUTE` | `TRUE` para ser compeltamente silencioso no que diz respeito as funções cURL. |
  `CURLOPT_NETRC` | `TRUE` para procurar no arquivo ~/.netrc um nome de usuário e senha para o local a qual a conexão remota esta sendo estabelecida. |
  `CURLOPT_NOBODY` | `TRUE` para excluir o corpo da saída. O metodo da solicitação é então definido como HEAD. Mudar isto para `FALSE` não muda-o para o GET. |

  `CURLOPT_NOPROGRESS`

  `TRUE` para desabilitar o medidor de progresso para as transferencias cURL.

  > Nota: PHP automaticamente define essa opção como `TRUE`, isto deve ser modificado apenas para fins de debug.

  `CURLOPT_NOSIGNAL` | `TRUE` para ignorar qualquer função cURL que faça com que um sinal seja enviado para o processo PHP. Isto é ativado por padrão em servidores multi-tarefa assim opções de limite de tempo ainda podem ser usadas. | Adicionado no cURL 7.10 e PHP 5.0.0.
  `CURLOPT_POST` | `TRUE` para fazer um HTTP POST normal. Este POST é do tipo normal application/x-www-form-urlencoded, mais comunmente usado pelos formulários HTML. |
  `CURLOPT_PUT` | `TRUE` para enviar um arquivo usando HTTP PUT. O arquivo a enviar deve estar definido com `CURLOPT_INFILE` e `CURLOPT_INFILESIZE`. |
  `CURLOPT_RETURNTRANSFER` | `TRUE` para retornar a transferencia como uma string de valor de retorno de curl_exec() ao invés de enviar diretamente para a saída. |

  `CURLOPT_SSL_VERIFYPEER`

  `FALSE` para fazer o cURL parar de verificar o certificado do cliente. Certificados alternativos para verificar podem ser definidos com a opção `CURLOPT_CAINFO` ou um diretório de certificados pode ser definido com a opção `CURLOPT_CAPATH`. `CURLOPT_SSL_VERIFYHOST` também precisa ser definido como `TRUE` ou `FALSE` se `CURLOPT_SSL_VERIFYPEER` esta desabilitado (o padrão é 2).

  `TRUE` por padrão a partir do cURL 7.10. Instalado por padrão a partir do cURL 7.10.

  `CURLOPT_TRANSFERTEXT` | `TRUE` para usar o modo ASCII para transferencias FTP. Para LDAP, ele obtem os datos em texto simples ao invés de HTML. Em Sistemas Windows, ele não irá definir STDOUT para o modo binário. |
  `CURLOPT_UNRESTRICTED_AUTH` | `TRUE` para continuar enviando o nome de usuário e senha ao seguir localizações (usando `CURLOPT_FOLLOWLOCATION`), mesmo que o nome do servidor tenha mudado. | Adicionado no PHP 5.0.0.
  `CURLOPT_UPLOAD` | `TRUE` para preparar para o envio de um arquivo. |
  `CURLOPT_VERBOSE` | `TRUE` para enviar muita informação para a saída. Escreve a saída para STDERR, ou para o arquivo especificado usando `CURLOPT_STDERR`. |

  `value` deve ser um inteiro para os seguintes valores do parâmetro `option`:

  Opção | Definir `value` como | Notas
  --- | --- | ---
  `CURLOPT_BUFFERSIZE` | O tamanho do buffer a usar em cada lida. Não há garantia de que este pedido será cumprido, entretando. | Adicionado no cURL 7.10 e PHP 5.0.0.
  `CURLOPT_CLOSEPOLICY` | Ou `CURLCLOSEPOLICY_LEAST_RECENTLY_USED` ou `CURLCLOSEPOLICY_OLDEST`. Existem ainda três outras constantes CURLCLOSEPOLICY_, mas cURL ainda não as suporta. |
  `CURLOPT_CONNECTTIMEOUT` | O número de segundos para esperar ao tentar se conectar. Use 0 para esperar infinitamente. |
  `CURLOPT_DNS_CACHE_TIMEOUT` | O número de segundos para manter entradas DNS na memória. Esta opção é definida para 120 (2 minutos) por padrão. |
  `CURLOPT_FTPSSLAUTH` | O método de autenticação FTP (quando é ativado): CURLFTPAUTH_SSL (tentar SSL primeiro), CURLFTPAUTH_TLS (tentar TLS primeiro), ou CURLFTPAUTH_DEFAULT (deixar cURL decidir). | Adicionado no cURL 7.12.2 e PHP 5.1.0.
  `CURLOPT_HTTP_VERSION` | `CURL_HTTP_VERSION_NONE` (padrão, deixa o CURL decidir qual versão usar), `CURL_HTTP_VERSION_1_0` (força HTTP/1.0), ou `CURL_HTTP_VERSION_1_1` (força HTTP/1.1). |

  `CURLOPT_HTTPAUTH`

  O metodo de autenticação HTTP a usar. As opções são: `CURLAUTH_BASIC`, `CURLAUTH_DIGEST`, `CURLAUTH_GSSNEGOTIATE`, `CURLAUTH_NTLM`, `CURLAUTH_ANY`, e `CURLAUTH_ANYSAFE`.

  O operador de bits | (ou) pode ser usado para combinar mais de um metodo. Se isso for feito, o cURL irá conversar com o servidor e ver quais métodos ele suporta e escolher o melhor.

  `CURLAUTH_ANY` é um apelido para CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

  `CURLAUTH_ANYSAFE` é um apelido para CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

  Adicionado no PHP 5.0.0.

  `CURLOPT_INFILESIZE` | O tamanho experado, em bytes, do arquivo ao enviar um arquivo para um local remoto. |
  `CURLOPT_LOW_SPEED_LIMIT` | A velocidade de transferencia, em bytes por segundos, a qual a transferência deve estar abaixo durante de `CURLOPT_LOW_SPEED_TIME` segundos para o PHP considerar a transferência muito lenta e abortar. |
  `CURLOPT_LOW_SPEED_TIME` | O número de segundos que a transferência deve estar abaixo de `CURLOPT_LOW_SPEED_LIMIT` para o PHP considerar a transferência lenta de mais e abortar. |
  `CURLOPT_MAXCONNECTS` | O número máximo de conexões persistentes que são permitidas. Quando o limite é atingido, `CURLOPT_CLOSEPOLICY` é usado para determinar qual conexão deve ser fechada. |
  `CURLOPT_MAXREDIRS` | O número máximo de redirecionamentos HTTP a seguir. Use esta opção em conjunto com `CURLOPT_FOLLOWLOCATION`. |
  `CURLOPT_PORT` | Um número alternativo de porta para conectar. |
  `CURLOPT_PROXYAUTH` | Os métodos HTTP de autenticação usados para conectar ao servidor proxy. Use as mesmas mascaras de bits descritas em `CURLOPT_HTTPAUTH`. Para autenticação com o proxy, apenas `CURLAUTH_BASIC` e `CURLAUTH_NTLM` são suportados atualmente. | Adicionado em cURL 7.10.7 e PHP 5.1.0.
  `CURLOPT_PROXYPORT` | O número de porta para conectar ao proxy. Este número de porta também pode ser definido em `CURLOPT_PROXY`. | Adicionado no PHP 5.0.0.
  `CURLOPT_PROXYTYPE` | Ou `CURLPROXY_HTTP` (padrão) ou `CURLPROXY_SOCKS5`. | Adicionado no cURL 7.10 e PHP 5.0.0.
  `CURLOPT_RESUME_FROM` | O índice, em bytes, a partir do qual continuar a transferencia. |
  `CURLOPT_SSL_VERIFYHOST` | 1 para conferir a existencia do nome comum no certificado SSL do cliente. 2 para conferir a existencia de um nome comum e também conferir se combina com o nome de servidor dado. |
  `CURLOPT_SSLVERSION` | A versão SSL (2 ou 3) a ser usada. por padrão o PHP tentará determinar isso por sí mesmo, entretando em alguns casos deve ser definido manualmente. |

  `CURLOPT_TIMECONDITION`

  Como `CURLOPT_TIMEVALUE` é tratado. Use `CURL_TIMECOND_IFMODSINCE` para retornar apagina apenas se foi modificada desde o tempo especificado em `CURLOPT_TIMEVALUE`. Se não foi modificada um cabeçalho "304 Not Modified" assumindo que `CURLOPT_HEADER` seja `TRUE`. Use `CURL_TIMECOND_IFUNMODSINCE` para o efeito reverso. `CURL_TIMECOND_IFMODSINCE` é o padrão.

  Adicionado no PHP 5.1.0.

  `CURLOPT_TIMEOUT` | O número máximo de segundos que uma função cURL pode executar. |
  `CURLOPT_TIMEVALUE` | O tempo em segundos desde 1º de Janeiro de 1970. O tempo será usado por `CURLOPT_TIMECONDITION`. Por padrão, `CURL_TIMECOND_IFMODSINCE` é usado. |

  `value` deve ser uma string para os seguintes valores do parâmetro `option`:

  Opção | Definir o `value` para | Notas
  --- | --- | ---
  `CURLOPT_CAINFO` | O nome do arquivo contendo um ou mais certidicados para verificar o peer. Esta opção apenas tem sentido em conjunto com `CURLOPT_SSL_VERIFYPEER`. |
  `CURLOPT_CAPATH` | Um diretório que contem vários certificados CA. Use este opção em conjunto com `CURLOPT_SSL_VERIFYPEER`. |
  `CURLOPT_COOKIE` | O conteúdo do cabeçalho "Set-Cookie: " a ser utilizado na requisição HTTP. |
  `CURLOPT_COOKIEFILE` | O nome do arquivo contendo os dados de cookie. O arquivo de cookie pode estar no formato Netscape, ou apenas no estilo de cabeçalhos HTTP salvos em um arquivo. |
  `CURLOPT_COOKIEJAR` | O nome do arquivo para salvar todos os cookies internos quando a conexão fechar. |

  `CURLOPT_CUSTOMREQUEST`

  Um método de solicitação personalizado para usar ao invés de "GET" ou "HEAD" ao fazer uma solicitação HTTP. Isto é útil para fazer "DELETE" ou outras solicitações HTTP mais obscuras. Valores válidos são coisas como "GET", "POST", "CONNECT" e assim por diante; i.e. Do not enter a whole HTTP request line here. For instance, entrar "GET /index.html HTTP/1.0\r\n\r\n" estaria errado.

  > Nota: Não faça isto sem ter certesa que o servidor suporte a requisição personaçlizada primeiro.

  `CURLOPT_EGDSOCKET` | Como `CURLOPT_RANDOM_FILE`, exceto um nome de arquivo para um Entropy Gathering Daemon socket. |
  `CURLOPT_ENCODING` | O conteúdo do cabeçalho "Accept-Encoding: ". Isto ativa a decodificação da resposta. codificações suportadas são "identity", "deflate", e "gzip". Se for definida uma string vazia, "", um cabeçalho contendo todos os tipos de codificações suportados é enviado. | Adicionado no cURL 7.10.
  `CURLOPT_FTPPORT` | O valor o qual vai ser usado para ter o endereço IP para usar com a instrução FTP "POST". A instrução "POST" diz ao servidor remoto conectar com o seu endereço IP especificado. A string deve ser um endereço IP simples, um nome de servidor, um nome de interface de rede (sob o Unix), ou apenas um simples "-" para usar o endereço IP padrão do sistema. |
  `CURLOPT_INTERFACE` | O nome da interface de rede de saída a usar. Isto pode ser um nome de interface, um endereço IP ou um nome de servidor. |
  `CURLOPT_KRB4LEVEL` | O nível de segurança KRB4 (Kerberos 4). Qualquer un dos seguintes valores (em ordem do menos ao mais poderoso) são válidos: "clear", "safe", "confidential", "private".. Se a string não combinar com um destes, "private" é usado. Definir esta opção como `NULL` irá desabilitar a segurança KRB4. Atualmente a segurança KRB4 funciona apenas com transações FTP. |
  `CURLOPT_POSTFIELDS` | Todos os dados para enviar em uma operação HTTP "POST". Para enviar um arquivo, adicione antes do nome do arquivo um @ e use o caminho completo. Isto pode ser passado como uma string codificada para url como 'para1=val1&para2=val2&...' ou como uma matriz com o nome do campo como índice e o dado do campo como valor. |
  `CURLOPT_PROXY` | O servidor HTTP proxy pelo qual passar as requisições. |
  `CURLOPT_PROXYUSERPWD` | Um nome de usuário e senha formatados como "[username]:[password]" para usar na conexão com o proxy. |
  `CURLOPT_RANDOM_FILE` | Um nome de arquivo para ser usado como semente para o gerador de números aleatórios para SSL. |
  `CURLOPT_RANGE` | Intervalo(s) de data para obter no formato "X-Y" aonde X ou Y é opcional. Transferencias HTTP também suportam vários intervalos, separados por vírgulas no formato "X-Y,N-M". |
  `CURLOPT_REFERER` | O conteúdo do cabeçalho "Referer: " a ser usado em uma solicitação HTTP. |
  `CURLOPT_SSL_CIPHER_LIST` | Uma lista de ciphers para usar com SSL. Por exemplo, RC4-SHA e TLSv1 são listas cipher validas. |
  `CURLOPT_SSLCERT` | O nome de um arquivo contendo um certificado formatado PEM. |
  `CURLOPT_SSLCERTPASSWD` | A senha necessária para usar o certificado `CURLOPT_SSLCERT`. |
  `CURLOPT_SSLCERTTYPE` | O formato do certificado. Formatos suportados são "PEM" (default), "DER", e "ENG". | Adicionado no cURL 7.9.3 e PHP 5.0.0.
  `CURLOPT_SSLENGINE` | O identificador para o motor de criptografia da chave SSL privada especificada em `CURLOPT_SSLKEY`. |
  `CURLOPT_SSLENGINE_DEFAULT` | O identificador para o motor de criptografia usado para para operações assimétricas. |
  `CURLOPT_SSLKEY` | O nome de um arquivo contendo uma chave SSL privada. |

  `CURLOPT_SSLKEYPASSWD`

  A senha secreta necessária para usar a chave privada SSL especificada em `CURLOPT_SSLKEY`.

  > Nota: Já que esta opção contem uma senha sensível, lembre-se de manter o script PHP que a contem em segurança.

  `CURLOPT_SSLKEYTYPE` | O tipo de chave para a chave SSL privada especificada em `CURLOPT_SSLKEY`. Tipos de chaves suportados são "PEM" (default), "DER", and "ENG". |
  `CURLOPT_URL` | A URL para obter. isto também pode ser definido ao inicializar a sessão com curl_init(). |
  `CURLOPT_USERAGENT` | O conteúdo do cabeçalho "User-Agent: " a ser usado na solicitação HTTP. |
  `CURLOPT_USERPWD` | Um nome de usuário e senha formatado como "[username]:[password]" para usar para a conexão. |

  `value` deve ser uma matriz para os seguintes valores do parâmetro `option`:

  Opção | Definir `value` como | Notas
  --- | --- | ---
  `CURLOPT_HTTP200ALIASES` | Um array de respostas HTTP 200 que serão tratadas como respostas válidas e não como erros. | Adicionado no cURL 7.10.3 e PHP 5.0.0.
  `CURLOPT_HTTPHEADER` | Um array de cabeçalhos HTTP a definir. |
  `CURLOPT_POSTQUOTE` | Um array de comandos FTP a executar no servidor depois de a requisição FTP ter sido realizada. |
  `CURLOPT_QUOTE` | Um array de comandos FTP a serem executados no servidor antes da requesição. |

  `value` deve ser um recurso stream (usando fopen(), por exemplo) para os seguintes valores do parâmetro `option`:

  Opção | Define `value` como | Notas
  --- | --- | ---
  `CURLOPT_FILE` | O arquivo na qual a transferencia deve ser escrita. O padrão é STDOUT (a janela do browser). |
  `CURLOPT_INFILE` | O arquivo que deve ser lido ao se fazer um upload. |
  `CURLOPT_STDERR` | Um local alternativo para se escrever os erros ao invés de STDERR. |
  `CURLOPT_WRITEHEADER` | O arquivo em que a parte do cabeçalho da transferencia é escrita. |

  `value` dese ser uma string que seja o nome de uma função de callback válida para os seguintes valores do parãmetro `option`:

  Opção | Define `value` como | Notas
  --- | --- | ---
  `CURLOPT_HEADERFUNCTION` | O nome da função de callback aonde a função de callback tem dois parâmetros. O primeiro é o recurso cURL, o segundo é uma string com os ados a serem escritos. Os dados do cabeçalho devem ser escritos usando esta função de callback. Retorna o número de bytes escritos. |
  `CURLOPT_PASSWDFUNCTION` | O nome da função de callback aonde a função de callback tem três parâmetros. O primeiro é o recurso cURL, o segundo é uma string contendo uma string para o pronpt da senha, e o terceiro é o limite de tamanho da senha. Retorna a string contendo a senha. |
  `CURLOPT_READFUNCTION` | O nome da função de callback aonde a função de callback tem dois parâmetros. O primeiro é o recurso cURL, e so segundo é uma string com os dados a serem lidos. Os dados devem ser lidos atráves dessa função de callback. Retorna o número de bytes lidos. Retorne 0 para indicar EOF (final do arquivo). |
  `CURLOPT_WRITEFUNCTION` | O nome da função de callback aonde a função de callback tem dois parâmetros. O primeiro é o recurso resource, e o segundo é a string com os dados a serem escritos. Os dados devem ser escritos usando essa função de callback. Deve retornar o número exato de bytes escritos ou isto irá falhar. |

### Valor Retornado

Retorna `TRUE` em caso de sucesso ou `FALSE` em falhas.

### Exemplos

Exemplo #1 inicializando uma nova sessão cURL e obtendo uma pagina da internet

`<?php
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
?>`

Exemplo #2 Enviando um arquivo

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

O exemplo acima irá imprimir:

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

    )

### Veja Também

- curl_setopt_array() - Set multiple options for a cURL transfer

curl_setopt_array
curl_version
Funções da cURL
PHP Manual