代码之家  ›  专栏  ›  技术社区  ›  iftheshoefritz

第一次访问页面时,Drupal生成的HTML上方会出现神秘数字。

  •  4
  • iftheshoefritz  · 技术社区  · 15 年前

    在我的Drupal站点上的许多页面上,当第一次在(编辑)任何浏览器中访问页面时,一个神秘的数字出现在HTML的上方(编辑:和下方)。在IE7和IE8中,有问题的页面呈现不正确,但在其他浏览器中,页面的其余部分呈现没有问题。刷新后,数字通常会消失。我的用户告诉我,错误每天早上都会再次发生,尽管我看到过一个案例,其中一个用户刷新,奇怪的数字不会消失。我对其他浏览器没有问题。

    下面是HTML的前几行:

    3535 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"   http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    

    …页面的其余部分正常生成,然后在底部看到以下内容:

    </html> 
    
    0 
    

    我很困惑-Apache日志和vhost error.log中都没有相关的内容。我对有数字的页面和没有数字的页面以及顶部和底部的数字做了不同的HTML,唯一的区别是空白。

    我在Ubuntu7.04上运行Apache2.2中的Drupal6.19。PHP版本为5.2。

    这里有我的index.php作为参考-我认为我们没有改变任何标准。

    <?php
    // $Id: index.php,v 1.94 2007/12/26 08:46:48 dries Exp $
    
    /**
     * (Drupal copyright ommitted for brevity)
     */
    
    require_once './includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    
    $return = menu_execute_active_handler();
    
    // Menu status constants are integers; page content is a string.
    if (is_int($return)) {
      switch ($return) {
        case MENU_NOT_FOUND:
          drupal_not_found();
          break;
        case MENU_ACCESS_DENIED:
          drupal_access_denied();
          break;
        case MENU_SITE_OFFLINE:
          drupal_site_offline();
          break;
      }
    }
    elseif (isset($return)) {
      // Print any value (including an empty string) except NULL or undefined:
      print theme('page', $return);
    }
    
    drupal_page_footer();
    
    4 回复  |  直到 14 年前
        1
  •  5
  •   Henrik Opel    15 年前

    在花大量时间检查您自己的代码之前,请分析所涉及的网络设置。

    一年前我们也有类似的现象 代理服务器插入数字的位置 就像他在转载的书页上那样。

    我不记得它是什么代理服务器的细节,也不记得他为什么这么做,但很明显,因为只有从某些网络访问该站点的人才能得到这些数字。

    编辑: 我不是百分之百确定,但我想是 this nginx reverse proxy issue ( This post 可能也有关联。)

        2
  •  3
  •   googletorp    15 年前

    很可能所有浏览器的标记都是相同的,但只有IE呈现它。

    我的最佳猜测是,在某个地方,有一小段调试代码正在打印出某个ID。如果您有任何模块/主题,那么您自己开发的就是最好的开始位置。

    如果找不到源,可以尝试切换主题并关闭模块,最终应该能够精确定位。首先,尝试在代码中搜索 print_r 语句。

        3
  •  0
  •   danorton    14 年前

    假设您正在使用反向代理来访问Apache,请将以下行添加到全局配置(例如 APACHE2.CONF ):

    SetEnv force-response-1.0 1
    SetEnv downgrade-1.0 1
    

    对于我的Ubuntu/Debian安装(使用nginx作为反向代理),我将这些行放入 /etc/apache2/conf.d/force-http-1.0.conf文件

        4
  •  0
  •   alecs    14 年前

    我不知道是否是同一个问题,但是有一天早上,在五月的所有页面上,Drupal页面都是一个奇怪的代码,显示在最底层,我不理解,无论如何,它是我在一个晚上之前创建的一个页面,我删除了它,并全部恢复到正常状态,任何情况下,这些事情都是由于捕获过载而发生的,只需做一个phpmyadmin和清除捕手,我希望这有帮助,Se-ya!

    推荐文章