1

Any thoughts as to why the following is not working.

$request_url = "someurl?myId=$id"; //returns feed like above

$json = file_get_contents($request_url, true); //getting the file content

$decode = json_decode($json, true);

var_dump($json);

When I paste the request_url into a browser I get back the json data but if I try in php the var_dump is simply bool(false); Any ideas??

Update and fix OK guys thanks for all the help. Ye helped me track this one down. It turned out to be the php.ini is configured to disallow the opening of urls so the file_get_contents would not work. I found the following handy function mentioned on various sites and used it so its sorted. Here is the method I used in case it helps someone else.

function file_get_contents_curl($url) {
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $url);

$data = curl_exec($ch);
curl_close($ch);

return $data;
}
jiraiya
  • 977
  • 4
  • 13
  • 34
  • not sure you should set the second parameter to true when reading URLs, as they are not in the include_path. [this comment](http://php.net/manual/en/function.file-get-contents.php#95665) may be related to your problem too – Einacio Oct 07 '11 at 14:55
  • 4
    1) The JSON isn't valid. 2) The page is inaccessible to the script for some reason, e.g. you need to be logged in. 3) Please show us the actual URL so we can work it out. – lonesomeday Oct 07 '11 at 14:55
  • In addition to lonesomeday, please try [json_last_error()](http://php.net/manual/function.json-last-error.php) – ComFreek Oct 07 '11 at 15:20

3 Answers3

0

maybe the response's charset of $request_url is not 'utf-8' or 'ansi'.

cuttinger
  • 109
  • 2
0

I replicated your problem and I observe bool(false) when the ajax url is wrong (not found). Make sure your "someurl" is valid.

If the JSON is invalid, your script would still print it correctly. If the url returns nothing you's still observe 'string(0) ""'

The issue is the invalid url.

Mazzaroth
  • 801
  • 9
  • 11
0

According to the PHP documentation, file_get_contents returns false on failure. This means that the url is not valid or can not be accessed from php.

If you are trying this from a server, be sure that your firewall is not blocking this outgoing traffic.

topek
  • 18,609
  • 3
  • 35
  • 43