PHP CURL und HTTPS
Die bereitgestellte Funktion ist ein hervorragendes Tool zum Abrufen von Webseiten. Beim Umgang mit HTTPS-URLs treten jedoch Probleme auf. Um dieses Problem zu beheben, müssen wir die notwendigen Anpassungen vornehmen, um die HTTPS-Unterstützung zu aktivieren.
Lösung 1: CURLOPT_SSL_VERIFYPEER
Die erste und schnellste Lösung besteht darin, die folgende Option hinzuzufügen das $options-Array:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Dadurch wird die Zertifikatsüberprüfung deaktiviert, sodass Sie effektiv eine Verbindung zu jedem Host herstellen können. Dies wird jedoch nicht empfohlen, da Sie dadurch anfällig für Man-in-the-Middle-Angriffe sind.
Lösung 2: Aktualisierte Funktion
Ein alternativer Ansatz ist die Integration den Fix direkt in die Funktion 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; }
Diese aktualisierte Funktion unterstützt jetzt sowohl HTTP- als auch HTTPS-URLs, indem sie die kostenpflichtige Zertifikatsüberprüfung deaktiviert der Sicherheit.
Das obige ist der detaillierte Inhalt vonWie behebe ich PHP-cURL-HTTPS-Verbindungsprobleme?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!