AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 111981
In Process
mmattax
mmattax
Asked: 2010-02-12 08:24:31 +0800 CST2010-02-12 08:24:31 +0800 CST 2010-02-12 08:24:31 +0800 CST

$_ENV['HOSTNAME'] 未设置,Apache 的潜在问题?

  • 772

我有 3 台 LAMP 服务器。今天我在 PHP 错误日志中注意到以下许多内容:

[11-Feb-2010 10:58:03] PHP 注意:未定义的索引:HOSTNAME 在...

当然,当我这样做时,这发生在 PHP 中:

回声 $_ENV['HOSTNAME'];

当我从命令行运行hostname时,我得到正确的(预期的)主机名,当我这样做时

php -r 'echo $_ENV["HOSTNAME"];'

我也得到了正确的(预期的)主机名。因此,我认为这是我的 Apache 配置而不是 PHP 中的问题(这就是我在 ServerFault 而不是 StackOverflow 上发布的原因)...

有任何想法吗?服务器正在运行 RHEL。

php redhat apache-2.2 hostname
  • 2 2 个回答
  • 5393 Views

2 个回答

  • Voted
  1. Andy
    2010-02-12T08:32:29+08:002010-02-12T08:32:29+08:00

    $_ENV 超全局变量包含环境变量,但 Apache 提供了 $_SERVER 数组。从手册

    这些变量从 PHP 解析器运行的环境导入到 PHP 的全局命名空间中。许多是由运行 PHP 的 shell 提供的,并且不同的系统可能运行不同类型的 shell,不可能有一个明确的列表。有关已定义环境变量的列表,请参阅您的 shell 文档。

    这应该起作用:

    echo php_uname('n'); 
    

    或 PHP 5.3

    echo gethostname(); 
    

    我无法$_ENV['HOSTNAME']从 apache 调用的 PHP 脚本(apache prefork RHEL)中获取

    http://php.net/manual/en/function.gethostname.php

    • 3
  2. daveadams
    2012-02-15T08:02:19+08:002012-02-15T08:02:19+08:00

    PHP 中的$_ENV数组是从 Apache 进程中的环境变量设置的,这些变量是从启动 Apache 守护程序的进程的环境中复制的。所以当它工作时,是因为$HOSTNAME在启动Apache的过程中从环境中导出,而当它没有工作时,是因为$HOSTNAME没有从那个环境中导出。

    我没有方便的 RHEL 机器来检查应该在哪里添加它,但是在任何启动 Apache 的脚本中(假设是 sh/bash),您都需要导出内部 Bash 变量 HOSTNAME:

    export HOSTNAME
    

    在实际的 Apache 初始化之前添加该行,它将确保变量显示为 PHP 具有$_ENV['HOSTNAME']. 或者,如果由于某种原因,您的 shell 默认未设置 HOSTNAME:

    export HOSTNAME=$(hostname -s)
    
    • 0

相关问题

  • 如何强制我的网址始终以 www 开头?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • mod_rewrite 不转发 GET 参数

  • 更改 PHP 的默认配置设置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve