CURL et HTTPS, “Ne peut pas résoudre d'accueil”
Je suis en train de récupérer le contenu d'une page à l'aide de CURL. La page qui est en train de faire la récupération de est https et la page c'est de la tentative d'extraction est également https. J'obtiens une erreur "impossible de résoudre d'accueil" avec tous les paramètres que j'ai essayer.
$c=curl_init();
curl_setopt($c, CURLOPT_URL,$url);
//curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:x.x.x) Gecko/20041107 Firefox/x.x");
curl_setopt ($c, CURLOPT_RETURNTRANSFER, TRUE);
//curl_setopt($c, CURLOPT_SSL_VERIFYPEER, TRUE);
//curl_setopt($c, CURLOPT_SSL_VERIFYHOST, TRUE);
curl_setopt($c, CURLOPT_HEADER, FALSE);
$html=curl_exec($c);
if($html === false) {
echo curl_error($c);
}
else {
echo 'Operation completed without any errors';
}
curl_close($c);
Des idées?
- Vous êtes de passage le protocole https://, comme partie de l'url?
- Oui, a tenté de str_replace pour le faire http, mais cela n'a pas modifié l'erreur.
Vous devez vous connecter pour publier un commentaire.
Peut-être un problème de DNS?
Essayer votre URL contre ce code:
Could not resolve host
J'ai trouvé que le ROULAGE peut décider d'utiliser l'IPv6, auquel cas il essaie de se résoudre, mais n'obtient pas d'IPv6 réponse (ou quelque chose à cet effet) et de temps.
Vous pouvez essayer le commutateur de ligne de commande -4 pour un test.
En PHP, vous pouvez configurer cette ligne par la définition de cette:
cat /var/log/apt/history.log
. Si non, vous aurez probablement besoin d'exécuter unapt-get update
etapt-get upgrade
. Un redémarrage de PHP-FPM fera l'affaire après le correctif.CURL_IPRESOLVE_V4
fixe immédiatement. Après utilisation, cette option n'était pas nécessaire de nouveau.J'ai eu le même problème. Coudn't résoudre google.com. Il y a un bug quelque part en php fpm, dont je suis l'aide. Le redémarrage de php-fpm résolu pour moi.
php7.0-fpm
(comme je suis sur php7.0) résolu pour moi aussi.Juste une remarque qui peut être utile - j'ai eu ce problème avec Apache sur mon ordinateur portable (qui se connecte en wifi APRÈS le démarrage), et de redémarrer le serveur (après connexion) correction du problème. Je suppose que dans mon cas, ce peut être à voir avec apache de départ en mode hors connexion et peut-être il y en notant que la résolution DNS a échoué?
Il y a un bogue dans la glibc sur Ubuntu qui peuvent avoir cet effet:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1674733
Pour résoudre le problème, la mise à jour de la libc et tous les Colis qui seront mis à jour: libc-bin libc-dev-bin libc6 libc6-dev libfreetype6 libfreetype6-dev locales multiarch-support) et redémarrez le serveur.
Sur le serveur où vous allez faire une demande, il devrait y avoir une entrée de votre hôte virtuel.
et insérez
La raison, si vous faites la demande de serveur pour lui-même, puis, pour répondre à votre hôte virtuel ou pour l'identifier, le serveur aurait besoin de trucs ci-dessus, sinon le serveur ne comprends pas votre demande(d'origine) de l'hôte.
Nous avons besoin d'ajouter un hôte certificat de sécurité pour php.fichier ini. Pour le local de développement de l'environnement, nous pouvons ajouter cacert.pem dans votre php.ini.
faire un phpinfo(); et de déposer votre fichier php.ini chemin ouvert et ajouter décommentez ;curl.capath
curl.capath=path_of_your_cacert.pem
ajouter yourlocalhost
ex. 127.0.0.1 cartes.localhost
dans le /etc/hosts répertoire.
Maintenant, redémarrez le serveur apache
Si vous le faites sur Windows XAMPP/WAMP il probaly ne fonctionne pas comme dans mon cas.
J'ai résolu le problème de la configuration de Laravel s Homestead/Vagrant solution pour créer mon (Ubuntu) environnement de développement - il a intégré dans l': Nginx, PHP 5.6, PHP 7.3, PHP 7.2, PHP 7.1, MySQL, PostgreSQL, Redis, Memcache, Nœud... pour n'en nommer que quelques-uns.
Voir ici pour info comment configurer l'environnement - cela vaut vraiment la peine!
Alors vous pouvez facilement changer les versions de PHP ou plusieurs hôtes virtuels, de nouvelles bases de données en quelques secondes seulement.
Votre obtenir l'erreur parce que vous êtes probablement de le faire sur votre environnement de serveur Local. Vous devez ignorer les certificats de vérifier lors de l'enroulement d'appel est fait. Pour cela il suffit d'ajouter les options suivantes
Vous devez activer le HTTPS partie:
Et si vous avez besoin de vérifier (vous authentifier) vous pouvez avoir besoin de cette trop: