Funções da cURL
PHP Manual / HOSPEDAGEM / Hospedagem de Sites / Registro de Domínio / Servidor Dedicado / Revenda / Web local / Php Manual Espanhol / Php Manual Francês / Php Manual Inglês

curl_setopt

(PHP 4 >= 4.0.2, PHP 5)

curl_setoptDefine 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($chCURLOPT_URL"http://www.example.com/");
curl_setopt($chCURLOPT_HEADERfalse);

// 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($chCURLOPT_URL'http://localhost/upload.php');
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_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


Funções da cURL
PHP Manual / HOSPEDAGEM / Hospedagem de Sites / Registro de Domínio / Servidor Dedicado / Revenda / Web local / Php Manual Espanhol / Php Manual Francês / Php Manual Inglês