php fsockopen

标签 php sockets

我在服务器上有一个简单的 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/

相关文章:

linux - 已连接套接字上的 read() 函数能否返回零字节?

javascript - 如何将字符串数组发送到数据库并一次搜索一个值

Java NIO。 SocketChannel.read方法每次都返回0。为什么?

java - 在java中将SO_LINGER套接字选项设置为ServerSocket

php - 每个 Behat 上下文的不同环境 (Symfony 4.x)

java - 我怎么知道 PrintWriter 中套接字连接的状态

java - 套接字批量读取返回一个零数组

php - 在 php 中调试 mongodb 查询和其他功能

php - Symfony2 Doctrine2 - 根据学说 :mapping:import 从现有数据库生成多对多注释

php - 为上传的文件和数据库添加时间