Eu escrevi este código simples:
$ch = curl_init();
//Set options
curl_setopt($ch, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$website_content = curl_exec ($ch);
No meu caso $website_content
vem como false
. Alguém pode sugerir / aconselhar algo sobre o que pode estar errado?
curl_error()
detalhes do erro e poste-os aqui, por favor.curl_error()
revelou?Respostas:
A verificação e o tratamento de erros são amigos do programador. Verifique os valores de retorno das funções cURL de inicialização e execução.
curl_error()
ecurl_errno()
conterá mais informações em caso de falha:* O
curl_init()
manual afirma:Observei a função retornar
FALSE
quando você está usando seu$url
parâmetro e o domínio não pode ser resolvido. Se o parâmetro não for usado, a função pode nunca retornarFALSE
. Sempre verifique de qualquer maneira, pois o manual não indica claramente quais são os "erros" na verdade.fonte
curl_exec
retorno FALSO. - Modo Curl Verbose no exemplo de PHPNo meu caso eu preciso definir
VERIFYHOST
eVERIFYPEER
parafalse
, como este:antes da chamada para
curl_exec($ch)
.Porque estou trabalhando entre dois ambientes de desenvolvimento com certificados auto-atribuídos. Com certificados válidos não há necessidade de conjunto
VERIFYHOST
eVERIFYPEER
defalse
porque ocurl_exec($ch)
método funcionará e retornar a resposta que você espera.fonte
Isso aconteceu comigo ontem e no meu caso foi porque eu estava seguindo um manual em PDF para desenvolver algum módulo de comunicação com uma API e enquanto copiava o link direto do manual, por algum motivo estranho, o
hyphen
do link copiado estava em um diferente codificação e, portanto,curl_exec()
estava sempre retornandofalse
porque não conseguia se comunicar com o servidor.Levei algumas horas para finalmente entender a diferença nos personagens abaixo:
Sempre que tentei acessar o link diretamente de um navegador, ele se converteu em algo semelhante
https://www.xn--eexample-0m3d.com/api
.Pode parecer a você que eles são iguais, mas se você verificar a codificação do
hyphens
aqui, você verá que o primeirohyphen
é um caracteres Unicode U + 2010 e o outro é um U + 002D .Espero que isso ajude alguém.
fonte