简体   繁体   中英

php json returning bool(false)

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;
}

在我的情况下,另一个因素是,在将端口80设置为可访问后,我的网址已在其他端口(而非80)上发布。

也许响应的$ request_url字符集不是'utf-8'或'ansi'。

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM