【问题标题】:Some files returning Error 520一些文件返回错误 520
【发布时间】:2016-06-08 10:27:00
【问题描述】:

我的 Web 服务器中的一些文件正在返回 Error 520: Web server is returning an unknown error。据我所知,返回错误的文件是index.phpgoogle0f3d9b***.html(用于验证谷歌站长控制台)。

以下是我的.htaccess 文件:

RewriteBase /

# Force non-www version
RewriteCond %{HTTP_HOST} ^www\.yikjin\.ga [NC]
RewriteRule ^(.*)$ https://yikjin.ga/$1 [L,R=301]

# Prevent 000webhost ads from poping up
php_value auto_append_file none

# Prevent directory listing
Options -Indexes

# Make index.php default
DirectoryIndex index.php

还有我的index.php

<!DOCTYPE html>
<html>
<head>
    <!-- ... -->
</head>

<body>
<header>
    <img src="/drawable/images/me.jpg" width="6%" alt="That's us!" title="That's us!">
    <span>Welcome to Cards!</span>
</header>

<div id="login">
    <img src="/drawable/images/cards.jpg" alt width="40%" height="auto">
    <h2 id="welcome">Welcome back,<br/>
        <span id="user">user</span>
    </h2>
    <h4>Please re-enter your password</h4>
    <form method="post">
        <label for="userid">Username</label>
        <br/>
        <input type="text" title="What's your username?
   eg. johntan" id="userid" name="userid" required>
        <br/>
        <span id="user-err"></span>
        <br/>
        <label for="pass">Password</label>
        <br/>
        <input type="password" title="What's your password?
   eg. *****" id="pass" name="pass" required>
        <br/>
        <span id="pass-err"></span>
        <br/>
        <input type="button" value="&lsaquo; Back" onclick="javascript:window.history.back();">
        <input type="submit" value="Continue &rsaquo;" name="login">
        <a href="#" target="_blank">Not you?</a>
    </form>
    <br/>
    <a href="/register.php">Register now</a>
</div>

    <link href="/drawable/css/design.css" type="text/css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Open+Sans:300" type="text/css" rel="stylesheet">

<!-- Begin Cookie Consent -->
<script type="text/javascript">
    window.cookieconsent_options = {"message":"We love cookies. So we use them. :D","dismiss":"Got it!","learnMore":"Whyyy...","link":null,"theme":"dark-bottom"};
</script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/1.0.9/cookieconsent.min.js"></script>
</body>
</html>

<?php
    include("/drawable/connect.php"); /* $dbcon is from this file */

    if (isset($_POST['login'])) {
        $userid = $_POST['userid'];
        $pass = $_POST['pass'];

        $check_user = "SELECT * FROM login WHERE userid = '$userid' AND password = '$pass'";
        $user_query = mysqli_query($dbcon, $check_user);

        if (mysqli_num_rows($user_query)) {
            $_SESSION['user'] = $userid;
            header("Location: welcome.php");
        }
        else {
            echo "<script>alert('Invalid credentials supplied; please retry');</script>";
        }
    }
?>

我认为这是我的 .htaccess 文件的问题,但我似乎无法弄清楚是什么。我使用 000webhost 作为我的网络服务器和 Cloudflare。我的网站的链接是yikjin.ga。我可以知道是什么导致网站无法正常工作吗?提前致谢!

【问题讨论】:

  • 首先,我没有看到这个错误。我只在底部看到 file.include 错误。其次,该错误来自 CloudFlare。最好在开发时关闭 CloudFlare,如果您遇到 PHP 错误,我假设您会这样做……此外,您对 $check_user 的查询容易受到 MySQL 注入攻击。最好使用 PDO 而不是 mysqli
  • file.include 错误是因为我还没有完成 Web 应用程序的开发。可能是我的互联网连接导致有时我看到Error 522Error 520 出现之前出现一瞬间。 images 在我的 Chrome 浏览器中加载良好。
  • 这意味着 Cloudflare 在访问域时遇到问题,并且连接超时。如前所述,开发时先关闭 CloudFlare。然后在完成后重新打开它,您可以从那里解决 CloudFlare 错误。另一件需要注意的是,免费的网络托管会带来服务器正常运行时间的成本,这不像付费托管那样可靠。我建议您切换到付费套餐,并在那里使用 CloudFlare。

标签: php .htaccess http-error


【解决方案1】:

引用自 CloudFlare 的文档:

520 错误本质上是一个“包罗万象”的响应。

这可能是由以下情况引起的:

  • 连接重置(在 TCP 握手成功后)
  • 标头超出 CloudFlare 的标头大小限制
  • 来自源的空响应
  • HTTP 响应无效
  • HTTP 响应缺少响应标头

来源:CloudFlare Error 520 Documentation

当 CloudFlare 无法建立到网站源服务器的 TCP 连接时,返回 522 错误响应。

这可能是由以下情况引起的:

  • 限制来自 CloudFlare 的 IP 的传入连接。
  • 网络服务器上的一个进程正在消耗源端的所有一个或多个资源。
  • 域位于共享托管平台上,同一服务器上不同域的流量或任务占用了一个或多个资源。
  • CloudFlare 和源 Web 服务器之间的网络连接问题。

来源:CloudFlare Error 522 Documentation

对于您的情况,很可能是服务器超时或 DB CONN 有问题。您可以尝试将 DB CONN 移动到文件中而不是包含它。

建议在开发时关闭 CloudFlare,以便更轻松地诊断您网站的任何问题。

【讨论】:

  • DB connect 没关系,因为即使我删除了所有 PHP 代码它仍然无法正常工作,所以我认为这不是正确的答案。感谢您对错误的详细解释
  • @YikJin 不客气!如果这个答案有助于解决您的问题,请点击支持/下载按钮下方的勾号接受它,谢谢!
  • 谢谢!我关闭了 CloudFlare,错误 522 消失了。 “CloudFlare 和源 Web 服务器之间的网络连接问题”
  • 这为我节省了数小时的 nginx 服务器配置,而我真正需要做的(在我们的例子中)只是在 POST 上重定向。
猜你喜欢
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多