PHP fsockopen 使用 SSL 时出现错误

PHP fsockopen 使用 SSL 时出现错误

连接到 fsockopen 时出现错误。

echo $result = fsockopen('ssl://smtp.gmail.com', 465, $error_no, $error_message, 5);
//$result = fsockopen('tls://smtp.gmail.com', 587, $error_no, $error_message, 5);
if ($result === false) {
  echo "error no: $error_no error message: $error_message";
  echo print_r($result, true);
} else {
  echo 'success';
}

错误号:0 错误信息:

我查看了手册这里意思是

如果 errno 中返回的值为 0,且函数返回 false,则表明错误发生在 connect() 调用之前。这很可能是由于初始化套接字时出现问题。

但我不知道如何解决这个问题。我有一个 AWS Ubuntu 18.04 实例,网站是 https。

问题是我正在尝试设置 gmail smtp。此设置在本地以及未安装 SSL 的其他 AWS 实例上均可正常工作

更新 1

print_r(stream_get_transports());

上述陈述给出

Array (
    [0] => tcp
    [1] => udp
    [2] => unix
    [3] => udg
    [4] => ssl
    [5] => tls
    [6] => tlsv1.0
    [7] => tlsv1.1
    [8] => tlsv1.2 
)

答案1

您没有收到错误,如您所见:$error_no 为零。

您的命令

echo $result = fsockopen(...)

毫无意义,或者肯定不是你想要的。你回显结果变量的内容,后面跟着一个等号,然后是——如果 fsockopen 确实执行了——由 fsockopen 返回的文件变量。参见PHP 手册 fsockopen正确使用。

相关内容