fopen()返回错误:无法打开流:HTTP请求失败!找不到HTTP / 1.1 404

时间:2012-06-21 05:58:18

标签: php linux

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

        $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”。任何帮助都会很棒。

1 个答案:

答案 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 ) );