Question

Is $_SERVER['SERVER_ADDR'] always set?

Should I check with isset() or is that unnecessary?

I need to get the IP of the site so I can find out if it's 127.0.0.1/localhost

Was it helpful?

Solution

It's not going to always be set. Consider that you can install PHP without even having a server and run it from command line. There is no guarantee with any of the $_SERVER variables, but if you try it once on your server and it works then you can bet that it will always be set on that server configuration. You just need to make a note somewhere that if you ever do a major change on your server's configuration, or switch servers you should check it again.

You can also check the value of your server variables with phpinfo()

OTHER TIPS

No, in CLI it's not set. So not always.

$ php -r "echo $_SERVER['SERVER_ADDR'];"

(no output)

If you have errors logged or reported (based on your PHP.ini settings), you will get this message as well:

PHP Notice: Undefined index: SERVER_ADDR in Command line code on line 1

CLI is a good example of when it's not set, but all of the _SERVER values are set by the server that php is running on, so depending upon the server you are using and its configuration, there's no guarantee that it will be set anyway.

As previously said via cli it's not available. Just in case you need to know the IP address both via cli or via HTTP call consider using something like following:

$IP = isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:gethostbyname(gethostname());
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top