总是$_SERVER['SERVER_ADDR']
设置?
我应该检查 isset() 还是没有必要?
我需要获取该站点的 IP,以便确定它是否为 127.0.0.1/localhost
总是$_SERVER['SERVER_ADDR']
设置?
我应该检查 isset() 还是没有必要?
我需要获取该站点的 IP,以便确定它是否为 127.0.0.1/localhost
不,CLI
它没有设置。所以并非总是如此。
$ php -r "echo $_SERVER['SERVER_ADDR'];"
(无输出)
如果您记录或报告了错误(基于您的 PHP.ini 设置),您也会收到以下消息:
PHP Notice: Undefined index: SERVER_ADDR in Command line code on line 1
它不会总是被设置。考虑到您甚至可以在没有服务器的情况下安装 PHP 并从命令行运行它。无法保证任何$_SERVER
变量,但是如果您在服务器上尝试一次并且它可以工作,那么您可以打赌它将始终在该服务器配置上设置。您只需要在某处记下,如果您对服务器的配置进行了重大更改,或者切换服务器,您应该再次检查它。
您还可以检查服务器变量的值phpinfo()
CLI 是未设置的一个很好的示例,但是所有_SERVER
值都是由运行 php 的服务器设置的,因此根据您使用的服务器及其配置,不能保证无论如何都会设置它。
正如之前通过 cli 所说,它不可用。万一您需要通过 cli 或 HTTP 调用知道 IP 地址,请考虑使用以下内容:
$IP = isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:gethostbyname(gethostname());