我在服务器上有一个简单的 php 脚本,它使用 fsockopen 连接到服务器。
<?php
$fp = fsockopen("smtp.gmail.com", 25, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
echo fgets($fp, 1024);
fclose($fp);
}
?>
问题是脚本超时并且无法连接。例如,如果我将端口从 25 更改为 80,它在任何主机上都可以正常工作。所以问题似乎只是端口 25,无论我使用什么主机,我尝试了很多,并且所有端口 80 和其他端口都工作,但 25 失败。
连接不会被防火墙阻止,就像我从 shell 远程登录一样,它成功连接到任何主机上的任何端口。
知道可能是什么问题吗,因为这真的很奇怪?
LE:如果我从 shell 运行相同的 php 脚本 php scriptname.php 它才有效,所以只有当我通过 http 运行它时才会失败。我有带有 SuPHP 的 apache,所以问题出在此处的某个地方
最佳答案
有趣... 某些防火墙可以阻止特定程序与特定端口的连接。 请再次检查,尝试完全关闭防火墙。还要尝试阻止任何反 spy 软件。
关于php fsockopen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365608/