【问题标题】:PHP Notice: Undefined index: HTTP_HOST in /var/.../script.php on line 8PHP 注意:未定义索引:HTTP_HOST in /var/.../script.php on line 8
【发布时间】:2012-11-12 21:35:30
【问题描述】:

我的 apache 错误日志中出现了与 this question 中描述的相同的错误。唯一的区别是我使用的是答案中描述的 $_SERVER。

第 8 行是:

if(strstr($_SERVER['HTTP_HOST'],'127.0.0.1'))

第 59 行出现相同的错误,它具有完全相同的条件。告诉网站我们是否在沙盒中是一个条件。据我所知,除了阻塞 apache 错误日志之外,没有发生任何不好的事情。

有谁知道为什么会发生这种情况以及如何解决它? PHP 版本是 5.3.10。服务器运行的是 Ubuntu 12.04。

谢谢。

【问题讨论】:

  • 如果您只是使用条件,那么使用 strpos 似乎更有意义,因为这里的文档建议 php.net/manual/en/function.strstr.php
  • 另外,根据文档,可能并不总是设置 HTTP_POST,php.net/manual/en/reserved.variables.server.php
  • 它只专门为命名的虚拟主机设置。如果您使用 HTTP/1.0 sans Host: 标头访问 localhost 作为默认服务器,则它不存在。显然也适用于 cron/cmdline 调用。

标签: php apache global-variables error-log


【解决方案1】:

手册暗示此索引可能并不总是设置 http://php.net/manual/en/reserved.variables.server.php

Host 的内容:当前请求的标头,如果有

【讨论】:

    【解决方案2】:

    FWIW,某些爬虫不会发送HTTP_HOST 信息; Googlebot 就是其中之一。一定要检查你的访问日志,爬虫命中站点的条目会与错误日志中的时间戳重合,例如:

    8.8.8.8 - - [28/Nov/2016:15:24:23 +0000] "GET / HTTP/1.0" 200 
                20463 "-" "Mozilla/5.0 (compatible; Googlebot/2.1;
                +http://www.google.com/bot.html)"
    

    对应的错误日志条目:

    [Mon Nov 28 15:24:23.579216 2016] [:error] [pid 28226]
            [client 8.8.8.8:20463] PHP Notice:  Undefined index: HTTP_HOST 
            in /var/www/public_html/site/script.php on line 5
    

    感谢 Googlebot!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 2014-02-06
      • 2022-01-25
      相关资源
      最近更新 更多