我确信这与其他问题类似,但我已经尝试了解决方案,但无法使其发挥作用。
我正在尝试获取IP地址的位置,解码json并打印它。我实际上计划将其放入数据库,但我甚至不确定为什么我无法将任何内容打印到屏幕上。
$ip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("http://api.hostip.info/get_json.php?ip=".$ip);
$local = json_decode($json,true);
谢谢。
A。当你指的是I cant get anything to print to the screen.
时,你肯定可以得到任何东西,因为你没有向屏幕输出任何东西。
error_reporting(E_ALL);
$ip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("http://api.hostip.info/get_json.php?ip=".$ip);
$local = json_decode($json,true);
echo $local['city'] ;
print $local['country_name'] ;
var_dump($local);
B。这也意味着不允许file_get_contents
从另一个域加载信息的allow_url_include set to Off
首先,您提供的代码实际上并没有打印任何内容,这可以解释为什么会出现空白屏幕。我想您稍后会在程序中执行类似echo $local;
的操作,但如果没有,那就是问题所在。
假设这不是问题所在。。。。
两种可能性:
-
file_get_contents()
正在返回错误。 -
json_decode()
正在返回错误。
首先,您应该在代码中添加一些额外的错误陷阱,以确定哪一个是问题所在。
如果您将PHP设置为不显示错误,请考虑打开它们,这样您就可以看到生成的任何错误。或者查看服务器日志以查看错误。
如果URL无效,file_get_contents()
可能会失败。如果您的PHP安装设置为不允许通过文件处理函数访问URL,那么它也可能失败。如果是这种情况,您将需要更改php.ini设置。如果你不能做到这一点,你将不得不通过一个不同的方法加载文件(例如Curl)。
只有当json_decode()
获取的字符串是无效的JSON时,它才有可能失败。您应该检查URL的输出以确认它看起来是正确的,并像firebug一样检查它以确保它是有效的。
希望能有所帮助。