【PHP】有關 php5.2 的curl https 問題

php5.2 curl 問題

最近發現在一些老舊的windows程式中(php5.2),使用財政部發票api的時候, 突然出現錯誤訊息

CURLOPT_SSL_VERIFYPEER false 14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

然而實際上 已經關閉ssl的驗證機制了,但是還是依然出現這項錯誤。

function fnToolsPost($aQuery){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($ch, CURLOPT_URL, 'https://api.einvoice.nat.gov.tw/PB2CAPIVAN/invServ/InvServ');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($aQuery)  );

    $temp1=curl_exec($ch);

    if( $temp1 === false ){
        echo 'Curl ERROR: ' . curl_error($ch);

        return $temp1;
    }else{
        return $temp1;
    }
}

離奇的事,在linux and php7 的情況下是可以運作的。

解決辦法

將windows中php7 的 libeay32.dll,ssleay32.dll 取代 php5.2 中的相同檔案。 即可解決。

添加新評論