PHP CURL dan HTTPS
Fungsi yang disediakan ialah alat yang sangat baik untuk mendapatkan semula halaman web. Walau bagaimanapun, ia menghadapi masalah apabila berurusan dengan URL HTTPS. Untuk menyelesaikan masalah ini, kami perlu membuat pelarasan yang diperlukan untuk mendayakan sokongan HTTPS.
Penyelesaian 1: CURLOPT_SSL_VERIFYPEER
Penyelesaian pertama dan terpantas ialah menambah pilihan berikut kepada tatasusunan $options:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Ini melumpuhkan pengesahan sijil, dengan berkesan membenarkan anda untuk menyambung ke mana-mana hos. Walau bagaimanapun, ini tidak disyorkan kerana ia menyebabkan anda terdedah kepada serangan man-in-the-middle.
Penyelesaian 2: Fungsi Dikemaskini
Pendekatan alternatif adalah dengan menggabungkan pembaikan terus ke dalam fungsi 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; }
Fungsi yang dikemas kini ini kini menyokong kedua-dua HTTP dan HTTPS URL dengan melumpuhkan pengesahan sijil pada kos keselamatan.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Isu Sambungan PHP cURL HTTPS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!