当前位置: 首页 > 工具软件 > php-useragent > 使用案例 >

php的$_SERVER['HOSTNAME']

范高刚
2023-12-01

一、前言

      在最新一次更新代码后,发现代码中出现了$_SERVER['HOSTNAME']这个东西,关键是$_SERVER["HTTP_HOST"]和$_SERVER["SERVER_NAME"] 我们经常用到,一般是用来获取服务器上的相关参数,唯独这个HOSTNAME参数是实在没见过。

二、寻找$_SERVER[‘HOSTNAME’]

1、首先是正常执行程序,发现报错:

php notice :  Undefined index: HOSTNAME in ....

      也就是说,我们的php程序根本不能识别这个函数,但是也不是很严重的错误,只是个notice级别的,继续找找问题吧。

2、百度+google

      经过百度+google,发现apache有个HostnameLookups属性,貌似是设置查询DNS的问题,但是本地服务器是nginx,因此百度nginx类似于这个配置的东西,找到了 enableLookups:启用DNS查询(默认是DNS查询被禁用),但这个参数设置之后,还是不成功。那么这个参数十有八九不是咱们想象的关于DNS的配置

3、php获取服务器的hostname等

      在百度的时候,发现php的一个函数:php_uname — 返回运行 PHP 的系统的有关信息。 如果要获取hostname等相关信息,可以通过:

或者:$ hostname =(!empty($ _ ENV [“HOSTNAME”]))? $ _ENV [“HOSTNAME”]:env('HOSTNAME'); 
或者: $hostname = gethostname();

      这个函数和我们要找的东西很接近了,但问题是,我们要找的是$_SERVER['HOSTNAME'],关键就是这个$_SERVER到底有没有这样一个参数,没有的话,为何大佬要这么写呢?mmp,继续查。

4、继续百度+问大佬

      在继续查找的时候,偶然间看到有的博客在讲设置linux的系统变量’HOSTNAME’。博主一脸懵逼,难道php程序已经可以设置linux的系统变量了吗,本来以为是php内的一个参数呢。后来直接问大佬,大佬说这个就是linux的一个变量参数,不用在意。。。行叭,最起码浪费了这么多时间,也算是有个结果。

加个判断:

if(array_key_exists( 'HOSTNAME', $_SERVER)) {
				//通过这种提示方式,去掉错误信息,先判断是否存在这个东西
			}else{}

4、关于linux的环境变量:

参考:https://blog.csdn.net/u010533843/article/details/54986646
      通过该文章,我们可以知道,最终在/etc/profile 中找到了HOSTNAME这个环境变量。代码里面的那句话,应该就是为了获取程序执行时候的linux主机名。
相关链接:https://liuleijsjx.iteye.com/blog/427900 (Linux主机名Hostname详解)

总结: 在这次查找中,找到了很多有关或者无关的东西,别人的一行代码就让我纠结半天,虽然这个人是大佬,但还是有点伤心,知识储备差远了,加油啊,铁柱!

end

 类似资料: