连接到 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正确使用。