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

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

Mary-Kate Olsen
發布: 2024-12-17 05:37:24
原創
212 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板