php的$_SERVER['HOSTNAME']

2023-11-19

一、前言

      在最新一次更新代码后,发现代码中出现了$_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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php的$_SERVER['HOSTNAME'] 的相关文章

随机推荐

  • MATLAB中的eps的详细解释及用法

    1 首先 eps是一个函数 它表示的是一个数可以分辨的最小精度 默认时它表示1到它下一个浮点数之间的距离的一半 而正好等于最大小于1的浮点数到最小大于1的浮点数之间的距离 eps 2 2204e 16 下面是eps的默认精度 注 以下演示环
  • git高级用法之rebase

    rebase的高级用法 这里介绍两种高级用法 1 合并连续的或者不连续的两个提交记录 删除任意一个提交记录 改变提交记录的先后顺序 2 通过rebase合并分支 合并连续的两个提交 如下图的场景 gl是git log的缩写 不过也没这么简单
  • mybatis 循环集合查询

    数据库语句为 select from user where 张三 李四 王五 那么想用mybatis Mapper y entity 定义一个集合属性作为参数 private List searchName dao层 定义一个映射mappe
  • 使用MobaXterm连接到远程服务器

    仅供参考 文章目录 TOC 文章目录 一 前期准备 二 步骤 1 点击上册工具栏的Session 在弹出的窗口里选择SSH 2 点击Network settings 再点击中间的jump host 3 在弹出界面填入所需信息 并点击OK保存
  • 云原生服务更换二进制调测方法

    当前我们开发的服务基本都是云原生的服务 都跑在容器中 在开发过程中 想更换二进制文件调测就相当麻烦了 今天写了一个脚本 供大家参考 bin bash set ex appName testApp appPath home appName c
  • SpringBoot整合Druid-Mybatis&SpringSecurity使用

    SpringBoot整合JDBC 创建springBoot项目时首先需要导入JDBC的支持 以及MySQL驱动
  • Vim编辑器常用命令

    Vim编辑器常用命令 Vim三种工作模式 命令模式 输入模式和编辑模式 Vim打开文件 Vim快捷方向键和以单词为单位移动 Vim插入文本 Vim查找文本 Vim替换文本 Vim删除文本 vim复制和粘贴文本 Vim保存退出文本 Vim光标
  • timestamp相减的函数 java_DB2中TIMESTAMP字段的计算

    以下内容是对 DB2 基础 日期和时间的使用 的内容进行的摘要与精练 遗憾的是 本文参考的原文已经被IBM DeveloperWorks删掉了 暂时还没找到 1 在SQL中使用DB2中的寄存器获取数据库服务器当前时间戳SELECT curr
  • 如何用ps把蓝底照片换成白色的

    用ps把蓝底照片换成白色的的具体步骤为 1 打开换白底的照片 菜单栏 调整 替换颜色 打开这个工具 2 认真看下图的圆圈所指的地方 点一下这个结果色块 我们选择一个白色色彩 3 有一个关键的一个点 就是一定要保证明度是100的 这样才会出现
  • 学习笔记-Spark环境搭建与使用

    一 20 04 Ubuntu安装 清华源ISO源 https mirrors tuna tsinghua edu cn ubuntu releases 20 04 下载链接 https mirrors tuna tsinghua edu c
  • 【整理八】

    1 说说你对Event Loop的理解 Eventloop 是一种在编程语言中常用的编程模型 用于处理任务队列中的事件 它可以被用来处理各种任务 包括网络事件 文件读写 定时器 用户界面事件等Eventloop 的工作原理是 它会按顺序处理
  • 通过进入单用户模式解决linux中的rc.local修改后无法启动的问题

    问题 本想将teamviewer这个软件随linux自启动 所以将其启动命令放在rc local中 但是重启后发现linux启动不起来了 系统前面都是正常启动的 就是无法进入帐户登陆界面 无法输入root帐号密码 不能登陆到系统 按了ctr
  • ROS系列报错与解决方法

    6 28 一 问题描述 ROS运行roscore命令后发现提示log文件 日志文件 大小超过1G 需要清理 Checking log directory for disk usage This may take awhile Press C
  • MYSQL 查看最大连接数和修改最大连接数

    MySQL查看最大连接数和修改最大连接数 1 查看最大连接数 show variables like max connections 2 修改最大连接数 set GLOBAL max connections 200 以下的文章主要是向大家介
  • 2021年 centos7.2 openssl3安装全过程

    安装关联软件包和编译工具包 yum install perl ExtUtils CBuilder perl ExtUtils MakeMaker 官网下载 https www openssl org source wget https ww
  • C++里有哪几种数据类型

    C 里有哪几种数据类型 1 基本类型 布尔型 布尔型 即bool 它的取值只能是true 真 或者false 假 分别代表非零与零 对布尔型的赋值可以直接用true或者false进行赋值 也可以用整型常量对其进行赋值 只不过整型常量赋值给布
  • vue加载ElementUI的el-image图片时不能使用相对路径问题

    Vue官方提供的图片控件el image 在加载相对路径时会出现加载失败现象
  • boost中boost::uint32_t和一般的uint32_t的区别

    using boost int8 t using boost uint8 t using boost int16 t using boost uint16 t using boost int32 t using boost uint32 t
  • word格式问题——英文单词间距太大、文本中嵌入公式导致行距太大、单双栏排版

    1 英文单词直接间距太大 1 全选 右击鼠标 选 段落 中文版式 勾选 允许西文在单词中间换行 如果不勾选此项 可目测换行位置 按住Shift打回车 手动换行 2 选择左对齐 然后用 连接被分割的单词 2 文本中嵌入公式导致行距太大 在段落
  • php的$_SERVER['HOSTNAME']

    一 前言 在最新一次更新代码后 发现代码中出现了 SERVER HOSTNAME 这个东西 关键是 SERVER HTTP HOST 和 SERVER SERVER NAME 我们经常用到 一般是用来获取服务器上的相关参数 唯独这个HOST