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