问题
I am using the following API for getting the country code using IP
http://api.hostip.info/country.php?ip=' . $IP
Example: on 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);
and its working fine here and showing the country code.
But it showing error on Server
Example:
$IP=$_SERVER['REMOTE_ADDR'];
$country_code = file_get_contents('http://api.hostip.info/country.php?ip=' . $IP);
Showing following error:
Warning: file_get_contents(http://api.hostip.info/country.php?ip=101.63.xx.xxx) [function.file-get-contents]: failed to open stream: Connection refused in /srv/disk4/1322145/www/servername.in/app/header.php on line 12
Whats wrong with this?
回答1:
You can use CURL in place of 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;
回答2:
Some servers do not permit accessing through IP address in your request.
You can use CURL
to prevent this problem.
来源:https://stackoverflow.com/questions/15835274/php-file-get-contents-failed-to-open-stream-connection-refused