提问三步曲: 提问先看教程/FAQ索引(wdcp,wdcp_v3,一键包)及搜索,会让你更快解决问题
1 提供详细,如系统版本,wdcp版本,软件版本等及错误的详细信息,贴上论坛或截图发论坛
2 做过哪些操作或改动设置等
温馨提示:信息不详,很可能会没人理你!论坛有教程说明的,也可能没人理!因为,你懂的
[提问] OPENSSL问题,使用fsockopen()函数提示错误
本帖最后由 artrogue 于 2017-5-13 08:23 编辑
环境配置
系统环境 CentOS7.2
WDCP v3.2.2 lanmp
PHP 多版本 指定使用5.6
OpenSSL 1.0.2h 3 May 2016
php.ini相关设置
allow_url_fopen = On
allow_url_include = On
openssl.cafile= /www/wdlinux/nginx/conf/cert/cacert.pem (后来下载OPENSSL证书放上的)
问题描述
PHP程序中使用
- $matches = parse_url($url);
- $host = $matches['host'];
- $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
- $transports = '';
- if($matches['scheme'] == 'https') { //判断是否使用HTTPS
- $transports = 'ssl://'; //如使用HTTPS则使用SSL协议
- $port = !empty($matches['port']) ? $matches['port'] : 443; //如使用HTTPS端口使用443
- } else {
- $transports = 'tcp://'; //如没有使用HTTPS则使用tcp协议
- $port = !empty($matches['port']) ? $matches['port'] : 80;//如没有使用HTTPS则使用80端口
- }
- $fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);
复制代码
其中此PHP文件运行无效果,生成error_log信息如下
- <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
- error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed | ../client.class.php | 395
- <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): Failed to enable crypto | ../client.class.php | 395
- <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): unable to connect to ssl://www.xxx.net:443 (Unknown error) | p../client.class.php | 395
复制代码
395行就是以上代码中的 $fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);
百度很多资料,没找到相关PHP报错的资料,找到一些E文网站,大约是说没有下载openssl根证书,于是更具资料提示下载OpenSSL根证书,并在php.ini设置OPENSSL证书位置,还是不能正常运行,报以上错误,估计是OPENSSL环境配置的问题,请admin指点 |