簡體   English   中英

未定義索引:WordPress中的HTTP_HOST

[英]Undefined index: HTTP_HOST in wordpress

我在日志中從wordpress中收到以下錯誤:“未定義索引: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

非法請求可能不包含該請求,因此它始終是可能的。

最好的預防方法是像使用每個變量一樣,在使用前檢查它是否存在。

<?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;
}
?>

似乎這可能是由於錯誤的請求。 如果客戶端不發送此標頭,則即使它是apache,它在服務器上也不存在。 必須來自腳本機器人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM