php json返回布尔(false)

问题描述:

任何想法为什么以下不起作用。php json返回布尔(false)

$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); 

当我粘贴request_url到浏览器中我找回了JSON数据,但如果我尝试在PHP中的var_dump简直布尔(假);有任何想法吗??

的更新和修复 确定球员感谢所有帮助。叶帮助我追踪这一个。原来,php.ini被配置为禁止打开网址,因此file_get_contents不起作用。我发现以下在各种网站上提到的方便功能,并将其用于排序。这是我用来帮助别人的方法。

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

不确定在读取URL时应将第二个参数设置为true,因为它们不在include_path中。 [this comment](http://php.net/manual/en/function.file-get-contents.php#95665)也可能与您的问题有关 – Einacio

+4

1)JSON无效。 2)出于某种原因,脚本无法访问页面,例如您需要登录。3)请向我们显示实际的URL,以便我们可以解决。 – lonesomeday

+0

除了寂寞的日子,请尝试[json_last_error()](http://php.net/manual/function.json-last-error.php) – ComFreek

我复制了你的问题,当ajax url错误(未找到)时,我观察到bool(false)。 确保你的“someurl”是有效的。

如果JSON无效,您的脚本仍然会正确打印它。 如果网址没有任何回报,你仍然可以观察到'string(0)“'''

问题是无效的url。

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

根据PHP文档,file_get_contents在失败时返回false。这意味着该网址无效或无法从PHP访问。

如果您从服务器尝试此操作,请确保您的防火墙未阻止此传出通信。