5

总是$_SERVER['SERVER_ADDR']设置?

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

我需要获取该站点的 IP,以便确定它是否为 127.0.0.1/localhost

4

4 回答 4

4

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

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

(无输出)

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

PHP Notice: Undefined index: SERVER_ADDR in Command line code on line 1
于 2011-08-10T22:56:05.527 回答
3

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

您还可以检查服务器变量的值phpinfo()

于 2011-08-10T22:58:15.657 回答
1

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

于 2011-08-10T23:18:45.713 回答
0

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

$IP = isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:gethostbyname(gethostname());
于 2015-05-04T09:46:51.333 回答