How to get server's public IP address using PHP?

24,792

It is not possible to get Your IP address on that way if you run web server on same machine or local LAN where you run your browser client, you will always get local IP address.

If You still want to get Your public address from PHP script, on *nix servers which runs in same network as your browser client, you can get it via command like this:

$myPublicIP = trim(shell_exec("dig +short myip.opendns.com @resolver1.opendns.com"));
echo "My public IP: ".$myPublicIP;
Share:
24,792
Ganesh Babu
Author by

Ganesh Babu

Updated on December 24, 2021

Comments

  • Ganesh Babu
    Ganesh Babu over 2 years

    I need to get Public IP address of the system using PHP. I tried the following function:

    function get_server_ip() {
        $ipaddress = '';
        if(getenv('HTTP_X_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
        else if(getenv('HTTP_X_FORWARDED'))
            $ipaddress = getenv('HTTP_X_FORWARDED');
        else if(getenv('HTTP_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_FORWARDED_FOR');
        else if(getenv('HTTP_FORWARDED'))
           $ipaddress = getenv('HTTP_FORWARDED');
        else if(getenv('REMOTE_ADDR'))
            $ipaddress = getenv('REMOTE_ADDR');
        return $ipaddress;
    }
    

    But, I got only the localhost IP 127.0.0.1. I am in need of the server's public IP address. What function is available in PHP to get my public IP address which I get from this site: http://www.whatismyip.com/

  • Ismail
    Ismail about 7 years
    And it resolves extremely fast! Thanks!
  • Software Developer
    Software Developer over 3 years
    This works 100% thank you. My PC is running XAMPP on Ubuntu 20.04 X64