是否始终设置$ _SERVER ['SERVER_ADDR']?

时间:2011-08-10 22:51:14

标签: php isset superglobals

始终设置$_SERVER['SERVER_ADDR']吗?

我应该检查isset()还是不必要?

我需要获取网站的IP以便我可以查看它是否为127.0.0.1/localhost

4 个答案:

答案 0 :(得分:3)

不,在CLI中没有设置。所以并非总是如此。

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

(无输出)

如果您记录或报告了错误(基于您的PHP.ini设置),您也会收到此消息:

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

答案 1 :(得分:3)

不会总是被设定。考虑到你可以在没有服务器的情况下安装PHP并从命令行运行它。任何$_SERVER变量都无法保证,但如果您在服务器上尝试一次并且它可以正常工作,那么您可以打赌它将始终在该服务器配置上设置。您只需要在某处做一个注释,如果您对服务器的配置进行了重大更改,或者切换服务器,则应该再次检查它。

您还可以使用phpinfo()

检查服务器变量的值

答案 2 :(得分:1)

CLI是一个很好的例子,它没有设置,但所有_SERVER值都是由运行php的服务器设置的,因此根据您使用的服务器及其配置,不能保证它无论如何都会被设定。

答案 3 :(得分:0)

如前所述,通过cli它不可用。 如果您需要通过cli或通过HTTP调用知道IP地址,请考虑使用以下内容:

$IP = isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:gethostbyname(gethostname());