我的日志中有以下来自wordpress的错误:“未定义的索引: HTTP_HOST”。当然,该文件请求$_SERVER‘’HTTP_HOST‘,但是当通过Apache访问网站时,这是怎么看的呢?我已经通过var_dump验证了这个变量的存在和设置。
我想为我的日志清除这个错误,并找出这是如何可能的。我没有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发布于 2015-01-31 21:17:24
一个非法的请求可能不包括它,所以它总是可能的。
最好的预防方法是在使用之前检查它是否存在,就像每个变量一样。
<?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;
}
?>发布于 2015-01-31 21:10:13
看来这可能是因为一个错误的要求。如果客户端不发送此标头,那么服务器上也不存在它,即使它是apache。一定是脚本机器人的。
https://stackoverflow.com/questions/28256508
复制相似问题