PHP的fsockopen()函数问题

发布于 2024-10-07 09:57:44 字数 826 浏览 5 评论 0原文

你好:)
我对 PHP 的函数有疑问。我不明白为什么它不能工作,这对我的项目来说是一个问题。

上下文:
我有 Joomla 并希望它通过选项“SMTP 服务器”发送电子邮件。它不起作用,返回的是“无法连接到 smtp 主机”。
我在谷歌中搜索了这个问题,但我发现的所有解决方案都不适合我。所以我决定进入代码看看发生了什么。当代码调用内置 PHP 方法“fsockopen()”时,就会出现问题。该方法表示与主机的连接超时。
有趣的是:我可以在同一台计算机上使用与邮件客户端(Evolution)完全相同的参数连接并发送电子邮件(因此这不是开放端口或其他问题的问题)。

方法是:

fsockopen($host, $port, $errno, $errstr, $tval);  

使用的参数和返回的错误:

$host : ssl://smtp.laposte.net. 
$port : 25
$errno : 110
$errstr : Connection timed out
$tval : 10

一些技术信息:
PHP 版本:5.2.14
套接字支持:已启用
操作系统:虚拟机(VMWare)下的Ubuntu 10.10
端口:端口 25 (smtp) 在虚拟机和虚拟机的主机上打开。

如果有人知道这个功能如何工作以及为什么它无法连接,这将对我有很大帮助,
预先感谢,
达米安

Hi there :)
I have a problem with a function of PHP. I can't understand why it cannot work, and that's a problem for my project.

The context :
I have Joomla and want it to send email via the option "SMTP server". It's not working and the return is "Can't connect to smtp host".
I had searched in google for that problem and all the solutions I found didn't work for me. So I decided to go into the code to see what happened. The problem occurs when the code call to the method "fsockopen()", a built-in PHP method. This method say that the connection to the host timed out.
Where it becomes funny : I can connect and send email with this host, with exact same parameters with a mail client (Evolution), on the same machine (so it's not a problem of opened port or something else).

The method is :

fsockopen($host, $port, $errno, $errstr, $tval);  

The used parameters and error returned :

$host : ssl://smtp.laposte.net. 
$port : 25
$errno : 110
$errstr : Connection timed out
$tval : 10

Some technical information :
PHP Version : 5.2.14
Sockets Support : enabled
OS : Ubuntu 10.10 under a virtual machine (VMWare)
Port : port 25 (smtp) is open on the virtual machine AND on the host of the virtual machine.

If someone had an idea how this function work and why it cannot connect, it will help me A LOT,
Thanks in advance,
Damien

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迟到的我 2024-10-14 09:57:44

我看到您正在使用 ssl...您是否在 php.ini 中启用了 OpenSSL?

如果安装了 OpenSSL 支持,您可以在主机名前添加 ssl:// 或 tls:// 前缀,以通过 TCP/IP 使用 SSL 或 TLS 客户端连接来连接到远程主机。

http://php.net/manual/en/function.fsockopen.php

I see you are using ssl... do you have OpenSSL enabled in php.ini?

If OpenSSL support is installed, you may prefix the hostname with either ssl:// or tls:// to use an SSL or TLS client connection over TCP/IP to connect to the remote host.

http://php.net/manual/en/function.fsockopen.php

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文