gpt4 book ai didi

php - 如何解决 [警告 : fsockopen(): unable to connect]?

转载 作者:可可西里 更新时间:2023-11-01 00:44:03 25 4
gpt4 key购买 nike

我想检查我的服务器 Ubuntu Server 14.04 LTS 在我的共享主机服务器上是否在线。我的服务器有 IP 而不是域,但我的共享托管服务器有域。为此,我在我的共享托管服务器中使用了以下代码来检查我的服务器是否在线。

<?php
$site = "XX.XX.XX.XX";
$port = 7550;
$fp = fsockopen($site,$port,$errno,$errstr,10);
if ($fp === false) {
print($errno." : ".$errstr);
}
if(!$fp)
{
echo "SERVER IS DOWN";
}
else
{
echo "SERVER IS UP ON PORT ".$port." AT ".$site;
fclose($fp);
}
?>

在我的共享托管服务器 php 文件中添加以上代码后,当我运行它时出现以下错误。

警告:fsockopen():无法连接到/home/USERNAME/public_html/index.php 中的 XX.XX.XX.XX:7550(连接超时)第 4 行 110:连接超时服务器关闭

现在有人告诉我检查 allow_url_fopen = On 是否在我的共享主机服务器中打开然后我检查了我的共享主机服务器 php.ini 文件并在那里它已打开。

现在,当我四处寻求帮助时,有人告诉我检查两者(我的共享托管服务器和我的服务器)是否打开了 fsockopen()。然后我将下面的代码写在一个 php 文件中并在两台服务器上运行。

<?php
$fp = fsockopen ("localhost", 80, $errno, $errstr, 10);
if (!$fp) {
echo "$errstr ($errno)
\n";
}else
{
echo "fsockopen Is Working Perfectly.";
}
fclose ($fp);
?>

在两台服务器上运行上面的 .php 文件后,我在两台服务器上得到了相同的结果。

fsockopen 运行良好。

重要说明:请记住,我的服务器 IP 保持事件状态,因为我在该 IP 上使用许多 PC,但我的服务器已关闭。我还可以使用代理在我的 Web 浏览器中打开 http://XX.XX.XX.XX:7550

最佳答案

因为如果主机名不是有效域,fsockopen 会抛出 E_WARNING 异常。因此,您使用带有 PORT offline 的 IP,然后该函数会抛出异常。

您可以通过处理异常或@:

来解决
$fp = @fsockopen($site,$port,$errno,$errstr,10);

如果您认为您的 PORT 在线,请检查防火墙,然后检查外部资源,如 http://www.yougetsignal.com/tools/open-ports/ .

阅读http://php.net/manual/es/function.fsockopen.php .

更新:你可以用socket_create测试,最好用fosockopen

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connection = @socket_connect($socket, 'XX.XX.XX.XX', 7550);

if( $connection ){
echo 'ONLINE';
} else {
echo 'OFFLINE: ' . socket_strerror(socket_last_error( $socket ));
}

您必须设置一个有效的协议(protocol),参见:http://php.net/manual/es/function.socket-create.php .

关于php - 如何解决 [警告 : fsockopen(): unable to connect]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25305417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com