|
1、如圖所示,同樣的php.ini配置,在 php 7.4 下 25 端口可以正常收發郵件, 465 端口就不行(日志錯誤是 CONNECT - Unable to connect to the SMTP server),而用 php 5.5, 25 和 465 端口都可以正常收發郵件。
郵局測試.jpg (138.27 KB, 下載次數: 9)
下載附件
2022-8-9 07:04 上傳
2、網上的文章
2.jpg (183.34 KB, 下載次數: 10)
下載附件
2022-8-9 07:07 上傳
希望高手能排查
1 貢獻最佳答案
新環境c7、php7.4、openssl1.1.1g,再discuz里發送郵件總是報ssl連接不上
Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in /www/a.php on line 5
Warning: fsockopen(): Failed to enable crypto in /www/a.php on line 5
Warning: fsockopen(): unable to connect to ssl://smtp.exmail.qq.com:465 (Unknown error) in /www/a.php on line 5
以上是測試結果
找了google和度娘都沒有解決,說什么證書問題
最后看到個修改方法的,臨時用一下
修改 source/function/function_core.php
注釋原來的函數,新增以下方法
function fsocketopen($hostname, $port = 80, &$errno, &$errstr, $timeout = 15) {
$fp = '';
if(function_exists('stream_socket_client')) {
$contextOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
);
$context = stream_context_create($contextOptions);
$fp = @stream_socket_client($hostname.':'.$port, $errno, $errstr, $timeout,STREAM_CLIENT_CONNECT, $context);
}
return $fp;
}
測試后可以正常放郵件,就是以后dz升級要注意下這塊或者重新編譯系統環境。
原文提示
一個php系統很早的了,后來把環境升級換成https與php5.6以后發現通信api不工作,通過排查發現是fsockopen函數的問題:
報錯:Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate
解決方法法改造一下fsockopen方法:
//不驗證證書
$contextOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
);
//如果有簽名的證書
/*
$contextOptions = array(
'ssl' => array(
'verify_peer' => true,
'cafile' => '/path/to/cacert.pem',
//'CN_match' => 'xcwmoon.net', // 匹配域名
'ciphers' => 'HIGH:!SSLv2:!SSLv3',
'disable_compression' => true,
)
);
*/
$context = stream_context_create($contextOptions);
$fp = stream_socket_client("ssl://{$host}:{$port}", $errno, $errstr, $timeout, STREAM_CLIENT_CO
|
|