tags:

views:

18

answers:

1

Hi I would like to know how to download a file to a variable (or memory) with php. I have tried using file_get_contents and a few RSS feed php libraries with no output (even with var_dump). This is the url that I am trying to access:

http://www.facebook.com/feeds/friends_status.php?id=MY_USER_ID&key=SECRET_KEY&format=rss20

MY_USER_ID is my facebook id, SECRET_KEY is the secret key. I am using the RSS feed method because I have tried for approximately 5 hours to make a facebook canvas application that fetches my friend's names and statuses with no success.

EDIT: You can access the feed without 404 errors by replacing the "http" with "feed"

+2  A: 

A lot of API's require a user agent string. So you could try setting that. You can use cURL to get the file, and change the headers. Try this function:

    function getUrl($url) {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0");
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);      
        curl_close($ch);
        return $output;
    }

Usage:

$file = getUrl('http://www.facebook.com/feeds/friends_status.php?id=MY_USER_ID&key=SECRET_KEY&format=rss20')
mellowsoon
I get false as the result. If I copy and paste the url into the safari download box, it downloads to a new file with the correct contents. Although that's a bit off topic...
alexy13
No problem. Before the curl_close() statement, add: echo curl_error($ch); See what kind of error you're having.
mellowsoon
Error : Couldn't resolve host 'www.facebook.com'
alexy13
Now that's interesting! Does it work on other hosts? For instance try grabbing "http://google.com".
mellowsoon
Yup, it works with google and apple. It shows a 301 moved page though :P
alexy13
Very curious.. hrm.. I wonder what would happen if you tried using Facebook's IP (69.63.181.12). Also you could get around the 301 thing by adding: curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1).
mellowsoon
Also be interesting in seeing what comes from echo gethostbyname('www.facebook.com');
mellowsoon
It works! Awesome! But I only get one status update compared to when I use Safari I get 10... But anyways.
alexy13
That is very weird though. I've never heard of a host being blocked in PHP, but not the computer PHP is running on. *shrugs*
mellowsoon

related questions