php json returning bool(false)

风流意气都作罢 提交于 2019-11-30 09:41:29

问题


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

回答1:


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.




回答2:


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




回答3:


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.



来源:https://stackoverflow.com/questions/7688966/php-json-returning-boolfalse

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!