消息:未定义的索引:$ _SERVER中的REMOTE_HOST

TCM*_*TCM 8 php

当我尝试检索远程用户的主机名时,为什么会出现此错误?

Message: Undefined index: REMOTE_HOST
Run Code Online (Sandbox Code Playgroud)

阅读文档时,我发现需要在httpd.conf中启用它.但我不确定需要在httpd.conf中编辑什么.

mar*_*rio 17

这不是错误,而是一个通知.在所有情况下都没有定义REMOTE_HOST.REMOTE_ADDR是.如果需要,您需要重新配置您的网络服务器.HostnameLookups On这样做,但它会导致经济放缓.

替代方案:让PHP进行查找,以便在不需要时跳过它(速度):

$r = $_SERVER["REMOTE_HOST"] ?: gethostbyaddr($_SERVER["REMOTE_ADDR"]);
Run Code Online (Sandbox Code Playgroud)


cod*_*ict 5

PHP手册REMOTE_HOST$_SERVER说:

必须将Web服务器配置为创建此变量.例如,在Apache中,您需要在httpd.conf中使用HostnameLookups才能存在.


小智 5

$r = $_SERVER["REMOTE_HOST"] ?: gethostbyaddr($_SERVER["REMOTE_ADDR"]); // Will still cause the error/notice message
Run Code Online (Sandbox Code Playgroud)

为了避免出现此消息,应使用:

$r = array_key_exists( 'REMOTE_HOST', $_SERVER) ? $_SERVER['REMOTE_HOST'] : gethostbyaddr($_SERVER["REMOTE_ADDR"]);
Run Code Online (Sandbox Code Playgroud)