完整的错误记录是:
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed.
使用错误的地方,在运行短信接口商提供的一个发短信的接口时遇到的:
$gateway = "https://xxx.xxx.com/sdk2/BatchSend2.aspx?CorpID={$uid}&Pwd={$passwd}&Mobile={$num}&Content={$msg}&Cell=&SendTime=";
$result = file_get_contents($gateway); //就这步的时候出错了
百度了好久,最后在一篇文章那里看到了解决办法,谢谢原作者。(https://blog.csdn.net/enlangs/article/details/78988673)
解决办法如下:
环境
OS:Windows 2008R2
PHP Version:5.6.31
问题
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed.
解决方法
- 从这儿下载 http://curl.haxx.se/ca/cacert.pem ,放到C盘certs目录下(没有就创建),存储为 cacert.crt
- 打开 php.ini 找到里面的 curl.cainfo 和 openssl.cafile(2个 section 挨着的,前面的分号去掉)
- 修改 curl.cainfo=”c:certscacert.crt”
- 修改 openssl.cafile=”c:certscacert.crt”
- 重启 IIS 服务(别忘记了,很重要!)
就这样就完美解决了!