13

我正在使用以下 API 获取使用 IP 的国家代码

http://api.hostip.info/country.php?ip=' . $IP

示例:在本地主机上

$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 行

这有什么问题?

4

3 回答 3

14

您可以使用 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;
于 2013-04-05T14:06:15.097 回答
2

某些服务器不允许通过您的请求中的 IP 地址进行访问。您可以使用CURL来防止此问题。

于 2013-04-05T14:33:26.327 回答
2

在我的例子中,Plesk 中的扩展突然开始对发出请求Fail2Ban的服务器进行 IP 阻止。file_get_contents()这可能不是问题,但我只是想让你意识到这种可能性。

于 2020-06-15T08:40:55.990 回答