Cybernetiquettes
Cybernetiquettes

Reputation: 55

file_get_contents ($URL) returns "Permission Denied" error

I lifted the following PHP code to enable me find users' location information, which will enable me execute some levels of restrictions.

However, the code works well on my localhost server. But when I upload the same php files to my remote web server, it returns an error thus:

Warning: file_get_contents(http://api.codehelper.io/ips/?php&ip=192.168.1.1): failed to open stream: Permission denied in /home/www/xyberinternational.com/lotto247.biz/visitorlocation/userip/ip.codehelper.io.php on line 41.

I have included the following files and their codes below. How can I fix this error?

Index.php file

<?php
require_once("userip/ip.codehelper.io.php");
require_once("userip/php_fast_cache.php");
$_ip = new ip_codehelper();

$real_client_ip_address = $_ip->getRealIP();
$visitor_location       = $_ip->getLocation($real_client_ip_address);

$guest_ip   = $visitor_location['IP'];
$guest_country = $visitor_location['CountryName'];
$guest_city  = $visitor_location['CityName'];
$guest_state = $visitor_location['RegionName'];

echo "IP Address: ". $guest_ip. "<br/>";
echo "Country: ". $guest_country. "<br/>";
echo "State: ". $guest_state. "<br/>";
echo "City: ". $guest_city. "<br/>";


$ip             = $visitor_location['IP'];
$Continent_Code     = $visitor_location['ContinentCode'];
$Continent_Name     = $visitor_location['ContinentName'];
$Country_Code2      = $visitor_location['CountryCode2'];
$Country_Code3      = $visitor_location['CountryCode3'];
$Country        = $visitor_location['Country'];
$Country_Name       = $visitor_location['CountryName'];
$State_Name         = $visitor_location['RegionName'];
$City_Name      = $visitor_location['CityName'];
$City_Latitude      = $visitor_location['CityLatitude'];
$City_Longitude     = $visitor_location['CityLongitude'];
$Country_Latitude   = $visitor_location['CountryLatitude'];
$Country_Longitude  = $visitor_location['CountryLongitude'];
$Country_Longitude  = $visitor_location['CountryLongitude'];
$LocalTimeZone      = $visitor_location['LocalTimeZone'];
$Calling_Code       = $visitor_location['CallingCode'];
$Population     = $visitor_location['Population'];
$Area_SqKm      = $visitor_location['AreaSqKm'];
$Capital        = $visitor_location['Capital'];
$Electrical     = $visitor_location['Electrical'];
$Languages      = $visitor_location['Languages'];
$Currency       = $visitor_location['Currency'];
$Flag           = $visitor_location['Currency'];
?>

ip.coderhelper.io.php file

<?php
class ip_codehelper {
public function getRealIP() {
    $ipaddress = '';
    if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
        $ipaddress = $_SERVER['HTTP_CF_CONNECTING_IP'];
    } else if (isset($_SERVER['HTTP_X_REAL_IP'])) {
        $ipaddress = $_SERVER['HTTP_X_REAL_IP'];
    }
    else if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';

    return $ipaddress;
}

public function getLocation($ip="") {
    if($ip == "") {
        $ip = $this->getRealIP();
    }
    if(!class_exists("phpFastCache")) {
        die("Please required phpFastCache Class");
    }
    // you should change this to cURL()
    $data = phpFastCache::get("codehelper_ip_".md5($ip));
    // caching 1 week


   if($data == null) {
        $url = "http://api.codehelper.io/ips/?callback=codehelper_ip_callback&ip=".$ip;
        $json = file_get_contents($url);
        $data = json_decode($json,true);
        phpFastCache::set("codehelper_ip_".md5($ip),$data,3600*24*7);
    }

    return $data;
}

public function SSLForwardJS() {
    $ip = $this->getRealIP();
    if(!class_exists("phpFastCache")) {
        die("Please required phpFastCache Class");
    }

    // you should change this to cURL()
    $data = phpFastCache::get("codehelper_ip_ssl".md5($ip));
    // caching 1 week
    if($data == null) {
        $url = "http://api.codehelper.io/ips/?callback=codehelper_ip_callback&ip=".$ip;
        $data = file_get_contents($url);

            phpFastCache::set("codehelper_ip_ssl".md5($ip),$data,3600*24*7);
        }
        return $data;
    }
}

Meanwhile, the fastcatch.php is quite large.

Upvotes: 0

Views: 5007

Answers (1)

MineSQL
MineSQL

Reputation: 25

This is your issue right here:

    $url = "http://api.codehelper.io/ips/?callback=codehelper_ip_callback&ip=".$ip;
    $data = file_get_contents($url);

(Near the bottom of the ip.coderhelper.io.php file)

This is throwing an error because the server you are trying to grab the data from is denying you access to the file. You have a couple options:

1) Talk to the codehelper.io staff and see if perhaps your server's IP is blacklisted or the general range is (Some times, depending on where you buy your server from companies black list the IP's because they are known to send out malicous attacks or requests.). Ask them to see if they can resolve the issue.

2) If that isn't a viable option, you can look at this post and the second answer has a little hacky work around. It is worth a shot.

Upvotes: 1

Related Questions