1

以下代码产生了我在标题中所述的错误:

        $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 上阅读了其他关于相同问题的问题,但从来没有真正的解决方案。我发布的代码在某种登录过程中调用的函数中。如果我将代码放在文档之外并用我的网络浏览器打开该文档,则不会出现错误。此外,该代码正在我的本地机器上运行。但是在我的服务器上出现了错误。

我的本地机器使用 php5 运行 ubuntu 12.04,我的外部服务器使用 php5 运行 ubuntu 8.04。allow_url_fopen 为“开”。任何帮助都会很棒。

4

1 回答 1

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 ) );
于 2012-06-21T06:28:54.143 回答