PHP- file_get_contents无法打开流:连接被拒绝

时间:2013-04-05 13:30:33

标签: php file-get-contents

我使用以下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行

这有什么不对吗?

3 个答案:

答案 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阻塞。这可能不会成为问题,但我只是希望您意识到这种可能性。