以下代码产生了我在标题中声明的错误:
$authkey = "XXXXXXXXXXX";
if (!isset($_SESSION["steamid"])) {
$handle = fopen("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=" . $authkey . "&steamids=" . $uid, "r");
$content = stream_get_contents($handle);
$stdclass = json_decode($content);
//var_dump($stdclass);
$data = get_object_vars($stdclass->response->players[0]);
foreach ($data as $key => $value) {
$_SESSION[$key] = $value;
}
我已经在stackoverflow上阅读了其他问题同样的问题,但从来没有一个真正的解决方案。我发布的代码是在某种登录过程中调用的函数。如果我将代码放在文档外面并使用我的Web浏览器打开该文档,则不会出现错误。此外,代码正在我的本地计算机上工作。但在我的服务器上出现错误。
我的本地机器使用php5运行ubuntu 12.04,我的外部服务器ubuntu 8.04运行php5。 allow_url_fopen为“On”。任何帮助都会很棒。
答案 0 :(得分:1)
fopen默认情况下不允许打开远程位置。更稳定的方法是使用curl:
$c = curl_init( sprintf("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=%s&steamids=%s" , $authkey , $uid) );
curl_setopt( $c , CURLOPT_RETURNTRANSFER , true );
$stdClass = json_decode( curl_exec( $c ) );