永久黄网站色视频免费直播,yy6080三理论日本中文,亚洲无码免费在线观看视频,欧美日韩精品一区二区在线播放
標(biāo)題:
[提問]
OPENSSL問題,使用fsockopen()函數(shù)提示錯(cuò)誤
[打印本頁]
作者:
artrogue
時(shí)間:
2017-5-13 07:57
標(biāo)題:
OPENSSL問題,使用fsockopen()函數(shù)提示錯(cuò)誤
本帖最后由 artrogue 于 2017-5-13 08:23 編輯
環(huán)境配置
系統(tǒng)環(huán)境 CentOS
7.2
WDCP v3.2.2 lanmp
PHP 多版本 指定使用5.6
OpenSSL 1.0.2h 3 May 2016
php.ini相關(guān)設(shè)置
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協(xié)議
$port = !empty($matches['port']) ? $matches['port'] : 443; //如使用HTTPS端口使用443
} else {
$transports = 'tcp://'; //如沒有使用HTTPS則使用tcp協(xié)議
$port = !empty($matches['port']) ? $matches['port'] : 80;//如沒有使用HTTPS則使用80端口
}
$fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);
復(fù)制代碼
其中此PHP文件運(yùn)行無效果,生成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
復(fù)制代碼
395行就是以上代碼中的
$fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);
百度很多資料,沒找到相關(guān)PHP報(bào)錯(cuò)的資料,找到一些E文網(wǎng)站,大約是說沒有下載openssl根證書,于是更具資料提示下載OpenSSL根證書,并在php.ini設(shè)置OPENSSL證書位置,還是不能正常運(yùn)行,報(bào)以上錯(cuò)誤,估計(jì)是OPENSSL環(huán)境配置的問題,請admin指點(diǎn)
作者:
artrogue
時(shí)間:
2017-5-13 08:58
我百度了一些錯(cuò)誤關(guān)鍵詞
OpenSSL Error messages:error:14090086
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Failed to enable crypto
好像都是說關(guān)于openssl根證書的問題,大神能幫看下如何解決嗎
作者:
artrogue
時(shí)間:
2017-5-14 12:35
本帖最后由 artrogue 于 2017-5-14 12:36 編輯
經(jīng)過三天的摸索和查找資料,現(xiàn)在我已確定問題所在
此問題和wdcp無關(guān),和php版本以及openssl相關(guān)
主要是因?yàn)閜hp在5.6版本(包含5.6)以后的所有版本中如使用fsockopen() 或file_get_content()函數(shù)獲取https站點(diǎn)的信息,OPENSSL會(huì)驗(yàn)證對(duì)方站點(diǎn)的SSL證書頒發(fā)機(jī)構(gòu)是否可信,如果沒有下載openssl根證書并在php.ini中設(shè)置openssl根證書路徑,就會(huì)造成無法驗(yàn)證對(duì)方網(wǎng)站SSL證書是否可信,就無法使用上述兩個(gè)函數(shù)獲取到內(nèi)容同時(shí)生成PHP警告信息,php5.6以前的老版本中此驗(yàn)證功能是沒有開啟或者說是沒有作用的。所以php5.6以前的版本不存在此問題!
OpenSSL Error messages:error:14090086
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Failed to enable crypto
特在此說明原因,同時(shí)希望我這兩天的折騰對(duì)以后遇到同樣問題的朋友有所幫助少走彎路
歡迎光臨 WDlinux官方論壇 (http://www.fsowen.com/bbs/)
Powered by Discuz! 7.2