我做了一个使用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代码的斗争中也遇到了问题。我终于成功了,以下是我在这个过程中学到的东西。
-
在
header()
命令之前绝对没有HTML输出。即使是最微小的空间也阻止了命令重定向任何内容。 -
我的服务器不允许使用
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; }
我知道这是一个迟来的答案,但我希望它能帮助到别人。