始终设置$_SERVER['SERVER_ADDR']
吗?
我应该检查isset()还是不必要?
我需要获取网站的IP以便我可以查看它是否为127.0.0.1/localhost
答案 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());