当前位置:论坛首页 > Linux面板 > 讨论

BT面板file_get_contents函数无法请求HTTPS链接的方法

发表在 Linux面板2017-3-28 01:42 [复制链接] 2 6149

本帖最后由 betrox 于 2017-3-28 01:46 编辑

一般遇到这样的问题,首先考虑升级OPENSSL。具体可见论坛内老帖:http://www.bt.cn/bbs/forum.php?m ... %E7%BA%A7%2BOPENSSL
在升级后无效,可以用以下方式解决:

这里只赘述Linux下的,Windows请自行百度。

首先,检查下PHP.INI里面有没有开启php_openssl.dll。大多数情况下只要开启了php_openssl.dll,就可以抓取Https链接。开启姿势:

  1. ;extension=php_openssl.dll
复制代码


去掉PHP.INI上面一句的前面引号。

我在实际操作中,开启后仍然有部分站点的链接无法返回请求。报错信息如下:
  1. <div>
  2. </div><div>Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /xxx/xxx.php on line 4</div><div>Warning: file_get_contents(): Failed to enable crypto in /xxx/xxx.php on line 4</div><div>Warning: file_get_contents(https://www.gaomeng.net.cn/2017/02/26/a569843a5c8c743c4369f8d9771b017d.jpg): failed to open stream: operation failed in /xxx/xxx.php on line 4</div>
复制代码


查了下OpenSSL错误14090086,发现全一些老外在叨叨。其实这个问题是由于目标网站证书较新造成的,解决很简单,SSH输入:

  1. php -r “print_r(openssl_get_cert_locations());”
复制代码


查看返回的默认证书位置。如:

  1. <div>[root@local]# php -r “print_r(openssl_get_cert_locations());”</div><div>Array</div><div>(</div><div>[default_cert_file] => /usr/ssl/cert.pem</div><div>[default_cert_file_env] => SSL_CERT_FILE</div><div>[default_cert_dir] => /usr/ssl/certs</div><div>[default_cert_dir_env] => SSL_CERT_DIR</div><div>[default_private_dir] => /usr/ssl/private</div><div>[default_default_cert_area] => /usr/ssl</div><div>[ini_cafile] => </div><div>[ini_capath] => </div><div>)</div>
复制代码


其中default_cert_file就是默认证书位置,如上面的就是/usr/ssl/cert.pem。从官方下载最新的开源证书,替换下即可。官方网址:https://curl.haxx.se/docs/caextract.html

至此,全部解决。看到网上很多人描述不清楚,误人子弟。故而记录下。


原帖链接:https://www.gaomeng.net.cn/351
打字老多,我的一个博客,留个链接吧。若感觉有用,请版主给个评价。

使用道具 举报 只看该作者 回复
发表于 2017-3-28 01:44:48 | 显示全部楼层
PS:希望BT保留2.8.9安装文件,各方面使用习惯了,不会找起来麻烦。像我这种懒散的用户,习惯了就不会接受新奇特的东西。
使用道具 举报 回复 支持 反对
发表于 2017-3-28 07:29:24 | 显示全部楼层
我也是用惯了不习惯改,希望稳定版功能增加,模版只做增加部分。。
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表