Php fsockopen不';如果使用if/else,则无法正常工作

Php fsockopen不';如果使用if/else,则无法正常工作,php,fsockopen,if-statement,Php,Fsockopen,If Statement,我有这个PHP代码 $fp = @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 1); if ($fp) { $url = "/"; fputs($fp, "GET $url HTTP/1.1\r\nHost: {$_SERVER['REMOTE_ADDR']}\r\nConnection: close\r\n\r\n"); $resp = ''; while(!feof($fp))

我有这个PHP代码

    $fp = @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 1);

if ($fp) {
    $url = "/";

    fputs($fp, "GET $url HTTP/1.1\r\nHost: {$_SERVER['REMOTE_ADDR']}\r\nConnection: close\r\n\r\n");
    $resp = '';

    while(!feof($fp)) {
        $resp .= fgets($fp, 1024);
    }

    if (preg_match('/^http\/1\.\d+ 401/i', $resp)) {
        echo "Requires authentication";
    } else {
        echo "No auth required.";
    }
} else {
    echo "Failed to connect on port 80, reason: $errstr";
}
我编辑了这几行

    } else {
    echo "Failed to connect on port 80, reason: $errstr";
}
我只写了两行代码来检查$errstr#连接是否被拒绝

像这样

        } else {
    if ($errstr != 'Connection refused') {
        echo "Ok;
    }  
}
但是代码不能正常工作

你能检查一下有什么问题吗


感谢您尝试使用套接字操作执行HTTP请求,而不仅仅是执行
文件获取内容($url)
?请在测试时删除
@
错误抑制,并查看是否有任何错误。此外,请确保在
ini
中将
allow\u url\u fopen
设置为true。看起来您缺少Ok上的结束引号。将
echo“Ok;
更改为
echo“Ok”
谢谢Marc B和prodigitalson。我的问题已经解决。