curl_exec() renvoie toujours false
J'ai écrit ce simple morceau de code :
$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);
Dans mon cas $website_content
vient comme false
.
Quelqu'un peut-il suggérer/conseils quelque chose de ce qui pourrait aller mal?
- Consulter
curl_error()
pour les détails de l'erreur et les publier ici, s'il vous plaît. - Si vous publiez le curl_error() comme une réponse, je vais upvote il car il m'a permis de voir ce que mon problème a été.
- Quel était exactement le problème? Quelle erreur avez -
curl_error()
révéler?
Vous devez vous connecter pour publier un commentaire.
La vérification des erreurs et de la manipulation est le programmeur de l'ami. Vérifier les valeurs de retour de l'initialisation et l'exécution des fonctions cURL.
curl_error()
etcurl_errno()
contient de plus amples informations en cas de panne:* La
curl_init()
manuel états:J'ai observé la fonction pour retourner
FALSE
lorsque vous êtes à l'aide de son$url
paramètre et le domaine n'a pas pu être résolu. Si le paramètre n'est pas utilisé, la fonction pourrait ne jamais revenirFALSE
. Toujours vérifier de toute façon, car le manuel n'est pas clairement état de ce que les "erreurs" sont en réalité.curl_exec
de retour à FALSE. - Curl Mode Verbose en PHP par exempleCe qui m'est arrivé hier, et dans mon cas parce que j'étais à la suite d'un manuel au format PDF pour le développement de certaines module de communiquer avec une API et tout en copiant le lien directement à partir du manuel, pour une raison étrange, la
hyphen
à partir de la copie d'un lien dans un autre encodage et donc lacurl_exec()
a toujours été de retourfalse
parce qu'il a été incapable de communiquer avec le serveur.Il m'a fallu quelques heures pour enfin comprendre la diference dans les caractères ci-dessous:
Chaque fois que j'ai essayé d'accéder au lien directement à partir d'un navigateur, il converti à quelque chose comme
https://www.xn--eexample-0m3d.com/api
.Il peut vous sembler qu'ils sont égaux, mais si vous vérifiez l'encodage de la
hyphens
ici vous verrez que la premièrehyphen
est un des caractères unicode U+2010 et l'autre est un U+002D.Espère que cela aide quelqu'un.
Dans mon cas, j'ai besoin de
VERIFYHOST
etVERIFYPEER
àfalse
, comme ceci:avant l'appel à
curl_exec($ch)
.Parce que je suis en train de travailler entre deux environnements de développement avec l'auto-attribué des certificats.
Avec des certificats valides il n'est pas nécessaire de définir
VERIFYHOST
etVERIFYPEER
àfalse
parce que lecurl_exec($ch)
méthode de travail et le retour de la réponse que vous attendez.