Maison >développement back-end >tutoriel php >Comment résoudre les problèmes de connexion HTTPS PHP cURL ?

Comment résoudre les problèmes de connexion HTTPS PHP cURL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-17 05:37:24271parcourir

How to Fix PHP cURL HTTPS Connection Issues?

PHP CURL et HTTPS

La fonction fournie est un excellent outil pour récupérer des pages Web. Cependant, il rencontre des problèmes lors du traitement des URL HTTPS. Pour résoudre ce problème, nous devons effectuer les ajustements nécessaires pour activer la prise en charge HTTPS.

Solution 1 : CURLOPT_SSL_VERIFYPEER

La première et la plus rapide solution consiste à ajouter l'option suivante à le tableau $options :

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Cela désactive la vérification du certificat, vous permettant ainsi de vous connecter à n'importe quel hôte. Cependant, cela n'est pas recommandé car cela vous rend vulnérable aux attaques de l'homme du milieu.

Solution 2 : Fonction mise à jour

Une approche alternative consiste à incorporer le correctif directement dans la fonction get_web_page :

/**
 * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
 * array containing the HTTP server response header fields and content.
 */
function get_web_page($url)
{
    $options = [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => false,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING => '',
        CURLOPT_USERAGENT => 'spider',
        CURLOPT_AUTOREFERER => true,
        CURLOPT_CONNECTTIMEOUT => 120,
        CURLOPT_TIMEOUT => 120,
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_SSL_VERIFYPEER => false, // Disabled SSL Cert checks
    ];

    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $content = curl_exec($ch);
    $err = curl_errno($ch);
    $errmsg = curl_error($ch);
    $header = curl_getinfo($ch);
    curl_close($ch);

    $header['errno'] = $err;
    $header['errmsg'] = $errmsg;
    $header['content'] = $content;
    return $header;
}

Cette fonction mise à jour prend désormais en charge les URL HTTP et HTTPS en désactivant la vérification des certificats au prix de sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn