我正在尝试使用PHP获取我的某个项目的客户端时区。在stackoverflow中看到一篇文章,其中包含我正在寻找的解决方案。这是该帖子的链接。
我遵循了最受赞誉的解决方案,但它产生了类似这样的错误。
假设$_SERVER['REMOTE_ADDR']
向212.88.207.202
返回$ip
,我在开发阶段将该值硬编码为$ip
。
由于硬编码212.88.207.202
或使用$_SERVER['REMOTE_ADDR']
,因此返回$ip
的相同值无关紧要。
但是当我运行页面时,我收到了这个错误。
Warning: file_get_contents(http://smart-ip.net/geoip-json/212.88.207.202): failed to open stream: No connection could be made because the target machine actively refused it.
这是代码
<?php
$ip = '212.88.207.202'; // means we got user's IP address
$json = file_get_contents( 'http://smart-ip.net/geoip-json/' . $ip); // this one service we gonna use to obtain timezone by IP
// maybe it's good to add some checks (if/else you've got an answer and if json could be decoded, etc.)
$ipData = json_decode($json, true);
//var_dump($ipData);
if ($ipData['timezone']) {
$tz = new DateTimeZone( $ipData['timezone']);
$now = new DateTime( 'now', $tz); // DateTime object corellated to user's timezone
} else {
// we can't determine a timezone - do something else...
}
?>
我哪里出错???
答案 0 :(得分:1)
嗯.....问题出在目标机器上。我尝试在浏览器中打开smart-ip.net,但我无法这样做。我认为他们不再运行他们的服务了。这就是为什么目标机器主动拒绝我的连接的原因。中提琴!