我在日志中收到来自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
答案 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。必须来自脚本机器人。