我使用以下API来获取使用IP的国家/地区代码
http://api.hostip.info/country.php?ip=' . $IP
示例:在 Localhost
上$IP = '202.71.158.30';
//pass the ip as a parameter for follow URL it will return the country
$country_code = file_get_contents('http://api.hostip.info/country.php?ip=' . $IP);
并且在此工作正常并显示国家/地区代码。
但它在服务器
上显示错误示例:
$IP=$_SERVER['REMOTE_ADDR'];
$country_code = file_get_contents('http://api.hostip.info/country.php?ip=' . $IP);
显示以下错误:
警告: 的file_get_contents(http://api.hostip.info/country.php?ip=101.63.xx.xxx) [function.file-get-contents]:无法打开流:连接 在/srv/disk4/1322145/www/servername.in/app/header.php中被拒绝 在第12行
这有什么不对吗?
答案 0 :(得分:11)
您可以使用CURL代替file_get_contents()
<?php
$IP = '202.71.158.30';
$runfile = 'http://api.hostip.info/country.php?ip=' . $IP;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $runfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec ($ch);
curl_close ($ch);
echo $content;
答案 1 :(得分:2)
某些服务器不允许通过您的请求中的IP地址进行访问。
您可以使用CURL
来解决此问题。
答案 2 :(得分:0)
在我的情况下,Plesk中的Fail2Ban
扩展名突然开始对执行file_get_contents()
请求的服务器进行IP阻塞。这可能不会成为问题,但我只是希望您意识到这种可能性。