当我更换服务器时,Steam作为OpenID停止工作


Steam as OpenID stopped working when I changed server

我做了一个使用Steam作为OpenID提供商的网站。我第一次在共享主机上主持它。

但流量从一天50个用户增长到一天1000个。我没想到会这样,所以不得不换个主持人。我选择了另一个性能更好的共享主机,等等,看看它会如何发展。但现在出现了一个问题。

我在Steam上的OpenID登录在上一台主机上运行得很好,但现在已经不起作用了。我试过谷歌,结果成功了。所以我不认为我的脚本使用了新主机上没有启用的功能。

因此,当我输入Steam标识时,它会在大约30秒内加载,然后Chrome会返回一个错误,ERR_EMPTY_REPONSE。我试图激活error_reporting E_ALL,但它也起到了同样的作用。

我正在使用LightOpenID,这是被指控的代码部分:

    $openid->identity = 'http://steamcommunity.com/openid';
    header('Location: ' . $openid->authUrl());

实际上,每当我调用$openid->authUrl()时,它都不起作用。以下是完整的代码:http://pastebin.com/rChDzECq

我该如何解决此问题?提前谢谢。

在过去的几个小时里,我在与LightOpenID代码的斗争中也遇到了问题。我终于成功了,以下是我在这个过程中学到的东西。

  1. header()命令之前绝对没有HTML输出。即使是最微小的空间也阻止了命令重定向任何内容。

  2. 我的服务器不允许使用file_get_contents(),只是从传递给它的URL返回了一个404错误。你可以用自定义的file_get_contents_curl()命令来解决这个问题。这是我自己用过的:

    function file_get_contents_curl($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
    

我知道这是一个迟来的答案,但我希望它能帮助到别人。