本文共 2242 字,大约阅读时间需要 7 分钟。
环境配置
系统环境 CentOS7.2WDCP v3.2.2 lanmpPHP 多版本 指定使用5.6OpenSSL 1.0.2h 3 May 2016php.ini相关设置allow_url_fopen = Onallow_url_include = Onopenssl.cafile= /www/wdlinux/nginx/conf/cert/cacert.pem (后来下载OPENSSL证书放上的)问题描述PHP程序中使用其中此PHP文件运行无效果,生成error_log信息如下
395行就是以上代码中的 $fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);百度很多资料,没找到相关PHP报错的资料,找到一些E文网站,大约是说没有下载openssl根证书,于是更具资料提示下载OpenSSL根证书,并在php.ini设置OPENSSL证书位置,还是不能正常运行,报以上错误,估计是OPENSSL环境配置的问题,请admin指点
我百度了一些错误关键词OpenSSL Error messages:error:14090086SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Failed to enable crypto好像都是说关于openssl根证书的问题,大神能帮看下如何解决吗
经过三天的摸索和查找资料,现在我已确定问题所在此问题和wdcp无关,和php版本以及openssl相关主要是因为php在5.6版本(包含5.6)以后的所有版本中如使用fsockopen() 或file_get_content()函数获取https站点的信息,OPENSSL会验证对方站点的SSL证书颁发机构是否可信,如果没有下载openssl根证书并在php.ini中设置openssl根证书路径,就会造成无法验证对方网站SSL证书是否可信,就无法使用上述两个函数获取到内容同时生成PHP警告信息,php5.6以前的老版本中此验证功能是没有开启或者说是没有作用的。所以php5.6以前的版本不存在此问题!OpenSSL Error messages:error:14090086SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Failed to enable crypto特在此说明原因,同时希望我这两天的折腾对以后遇到同样问题的朋友有所帮助少走弯路
如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/