php - fsockopen() 无法在特定网络主机上运行?

标签 php apache cpanel fsockopen connection-timeout

我们的一位客户说他们有一个非常简单的脚本,它使用 fsockopen() 来确定服务器是否在线。他们说直到最近它通过我们在他们的网站上运行良好,但最近刚刚停止工作,所以我假设这是一个设置。

我的第一个想法是他将其用作 TCP 并使用 IP/端口作为游戏服务器,但是他和我都确认该脚本在其他各种网络主机上运行良好。

我们的问题可能是什么?

作品:http://crazygfl.xfactorservers.com/query.php?ip=www.xfactorservers.com&port=80

作品:http://crazygfl-stats.com/query.php?ip=109.73.163.231&port=27015

不起作用:http://crazygfl.xfactorservers.com/query.php?ip=109.73.163.231&port=27015

这是代码...

<?php

    $timeout = (isset($_GET['timeout']) ? ($_GET['timeout'] <= 0 ? 30 : ((int)$_GET['timeout'])) : 30);

    if(empty($_GET['ip'])&&empty($_GET['port'])){
        echo 'No IP/Port specified.';
    }else{
        if(fsockopen($_GET['ip'], $_GET['port'], $errno, $errstr, $timeout) === false){
            echo 'offline';
        }else{
            echo 'online';
        }
    }

最佳答案

托管公司可能已禁用 fsockopen 功能或在您尝试测试的任何端口上对出站请求进行防火墙处理。如果是这种情况,您可以要求他们重新启用该功能或​​解锁端口,但如果他们不这样做,那么除了转移到新主机之外,您几乎没有什么办法。

顺便说一句,直接使用来自用户输入的数据($_GET、$_POST 等)而不进行任何类型的验证是一个非常糟糕的主意!

关于php - fsockopen() 无法在特定网络主机上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047583/

相关文章:

html - Openmeetings GUI 更改

php - 如何以编程方式在共享主机计划上创建插件域

php - Mysql 之间比较一个字段?

php - 使用分页将散列附加到 Laravel 中的 url

linux - 在 Linux 上将 apache 设置为服务

amazon-ec2 - 无法访问该站点的Amazon Ec2

mysql - 附加 MySQL 访问主机 Cpanel 的保存位置

php - 如何让 phpstan 推断我的 Laravel Collection 管道的类型?

php - 如何使用带有 foreach 循环的 PHP 从三个数组创建一个表?

php - 启用文件夹权限以允许文件上传。