CURL SSL为6的由来
起初,我直接用方倍工作室之前做微信接口调用时的http_request函数,发现能正常调用微信api的函数获取不了火星天气数据,
然后又尝试用file_get_contents,仍然不行
一直出的错就是ssl handshake timed out
明白问题一定在ssl上,但怎么解决是个大问题。
百度,google了各种方法都失败。
又尝试了各种ssl的配置,还是失败。
期间还有一个问题就是我自己的环境不行,导致一直没有找到正确的原因。走了很多弯路
后来找到一个网站,可以检测服务器的ssl版本。
网址为 https://www.ssllabs.com/ssltest/
通过检测,mars.nasa.gov 官网支持的ssl协议类型如下
TLS 1.3 No TLS 1.2 Yes TLS 1.1 No TLS 1.0 No SSL 3 No SSL 2 No
只支持 TLS 1.2
又查到 其对应的数字是 6
CURL_SSLVERSION_DEFAULT (0) CURL_SSLVERSION_TLSv1 (1) CURL_SSLVERSION_SSLv2 (2) CURL_SSLVERSION_SSLv3 (3) CURL_SSLVERSION_TLSv1_0 (4) CURL_SSLVERSION_TLSv1_1 (5) CURL_SSLVERSION_TLSv1_2 (6)
于是配置成 curl_setopt($ch, CURLOPT_SSLVERSION, 6)
在本地环境,新浪云和阿里云上成功了。
php版本5.3也可以,推荐本地的openssl版本太低导致不支持导致。
本文来自博客园,作者:方倍工作室,转载请注明原文链接:https://www.cnblogs.com/txw1958/p/11108378.html