首頁 >後端開發 >php教程 >如何修復 PHP cURL HTTPS 連線問題?

如何修復 PHP cURL HTTPS 連線問題?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-17 05:37:24271瀏覽

How to Fix PHP cURL HTTPS Connection Issues?

PHP CURL 和 HTTPS

提供的函數是檢索網頁的絕佳工具。但是,它在處理 HTTPS URL 時遇到問題。要解決此問題,我們需要進行必要的調整以啟用 HTTPS 支援。

解決方案1:CURLOPT_SSL_VERIFYPEER

第一個也是最快的解決方案是將以下選項加入$options 陣列:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

這將停用證書驗證,有效地允許您連接到任何主機。但是,不建議這樣做,因為它會讓您容易受到中間人攻擊。

解決方案2:更新功能

另一種方法是合併直接修復到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;
}

此更新的函數現在透過停用來支援HTTP 和HTTPS URL以安全性為代價的憑證驗證。

以上是如何修復 PHP cURL HTTPS 連線問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn