Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义索引:wordpress中的HTTP_主机_Php_Wordpress - Fatal编程技术网

Php 未定义索引:wordpress中的HTTP_主机

Php 未定义索引:wordpress中的HTTP_主机,php,wordpress,Php,Wordpress,我在日志中收到wordpress的以下错误:“未定义索引:HTTP\U主机”。当然,该文件正在请求$_SERVER['HTTP_HOST'],但当网站通过Apache访问时,这怎么可能被视为?我已经通过var_dump验证了这个var的存在和设置 我想为我的日志清除此错误,并找出这是如何可能的。我没有wordpress CLI cron,那么这会是什么呢?我要指出的是,这是一个随机请求,产生了这个错误。我浏览博客时不会发生这种情况 这是调用堆栈(…=/): 调用堆栈: 0) 17, 1) ...

我在日志中收到wordpress的以下错误:“未定义索引:HTTP\U主机”。当然,该文件正在请求$_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

看起来这可能是因为一个错误的请求。如果客户机不发送此头,则服务器上也不存在此头,即使它是apache。必须来自脚本机器人。

非法请求可能不包括它,因此总是可能的

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

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

从技术上讲,只有在HTTP 1.1中状态代码应为400的情况下才是非法的,如所述:“RFC所有基于Internet的HTTP/1.1服务器必须使用400(错误请求)状态代码响应任何缺少主机头字段的HTTP/1.1请求消息。”
<?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;
}
?>