未定义的索引:wordpress中的HTTP_HOST

时间:2015-01-31 21:03:41

标签: php wordpress

我在日志中收到来自wordpress的以下错误:“Undefined index:HTTP_HOST”。当然,该文件正在请求$ _SERVER ['HTTP_HOST'],但是当通过Apache访问网站时,这怎么看?我已经通过var_dump验证了这个var是否存在并且已经设置。

我想为我的日志清除此错误,并了解如何实现这一点。我没有wordpress CLI cron,那么这可能是什么?我想指出这是一个产生此错误的随机请求。我浏览博客时不会发生这种情况。

这是调用堆栈(... = /): 调用堆栈:

0) 17,
1) ... var... www2... wordpress... wp-blog-header.php 16, 
2) ... var... www2... wordpress... wp-includes... template-loader.php 74, 
3) ... var... www2... wordpress... wp-content... themes... oneengine... page.php 1, 
4) get_header 45, 
5) locate_template 477, 
6) load_template 501, 
7) ... var... www2... wordpress... wp-content... themes... oneengine... header.php 134, 
8) wp_nav_menu 328, 
9) _wp_menu_item_classes_by_context 549

2 个答案:

答案 0 :(得分:2)

非法请求可能不包括它,所以它始终是可能的。

最好的预防方法是在使用之前检查它是否存在,就像每个变量一样。

<?php
if (array_key_exists('HTTP_HOST', $_SERVER) {
  //use $_SERVER['HTTP_HOST']
}
?>

或者,因为这是非法请求,您可以阻止它。

<?php
if (!array_key_exists('HTTP_HOST', $_SERVER) {
    if (!headers_sent()) {
        $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
        header($protocol . ' 404 Not Found');
    }

    echo '<h1>Not Found</h1>';
    exit;
}
?>

答案 1 :(得分:-2)

似乎这可能是由于错误的请求。如果客户端没有发送此标头,那么它在服务器上也不存在,即使它是apache。必须来自脚本机器人。