[php json返回bool(false)

问题描述 投票:1回答:4

关于以下原因为何不起作用的任何想法。

$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就是bool(false);有什么想法吗?

更新和修复好的,谢谢大家的帮助。是的,我帮助我追踪了这一情况。事实证明,php.ini配置为禁止打开url,因此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;
}
php json web-services file-get-contents
4个回答
0
投票

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

如果JSON无效,您的脚本仍会正确打印。如果url不返回任何内容,您仍然会观察到'string(0)“”'

问题是无效的URL。


0
投票

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


0
投票

根据PHP文档,file_get_contents失败时返回false。这表示该网址无效或无法从php访问。

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


0
投票

在我的情况下,一个附加因素是,将URL放在端口80上之后,URL便发布在了另一个端口(不是80)上。

© www.soinside.com 2019 - 2024. All rights reserved.