[PHP] file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
繼上次 file_get_contents 遇到沒有指定 user-agent 就不能撈資料,這次又遇到新問題啦!
這一次的錯誤訊息是:
主要原因就是網站 SSL 問題,撇除 Server 設定問題,程式工程師可以做的部分就是直接把它換成 curl,沒錯...又是換成 curl。
原來的程式碼:
改版後的程式碼:
這一次我遇到的是 SSL 版本問題,所以這段程式的重點在於 curl_setopt($ch, CURLOPT_SSLVERSION, 6),其中 CURLOPT_SSLVERSION 有多個選項分別代表不同的版號,可以參考 https://www.php.net/manual/en/function.curl-setopt.php,而且不知道為什麼我寫常數 CURL_SSLVERSION_TLSv1_2 還不行,一定要寫 6。
這一次的錯誤訊息是:
file_get_contents():SSL operation failed with code 1. OpenSSL Error messages:
主要原因就是網站 SSL 問題,撇除 Server 設定問題,程式工程師可以做的部分就是直接把它換成 curl,沒錯...又是換成 curl。
原來的程式碼:
$contents = file_get_contents($url, false, $context);
改版後的程式碼:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $sendInfo); curl_setopt($ch, CURLOPT_SSLVERSION, 6); $contents = curl_exec($ch); curl_close($ch);
這一次我遇到的是 SSL 版本問題,所以這段程式的重點在於 curl_setopt($ch, CURLOPT_SSLVERSION, 6),其中 CURLOPT_SSLVERSION 有多個選項分別代表不同的版號,可以參考 https://www.php.net/manual/en/function.curl-setopt.php,而且不知道為什麼我寫常數 CURL_SSLVERSION_TLSv1_2 還不行,一定要寫 6。
留言
張貼留言