【问题标题】:Mysterious number appears above Drupal-generated HTML when visiting page for first time首次访问页面时,Drupal 生成的 HTML 上方出现神秘数字
【发布时间】:2010-11-12 09:03:04
【问题描述】:

在我的 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 的比较,唯一的区别是空格。

我在 Ubuntu 7.04 上的 Apache 2.2 中运行 Drupal 6.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();

【问题讨论】:

  • 我曾经为一个运行 Drupal 的门户网站工作,IIRC 也有同样的问题......他们从来没有设法找出它是什么。有兴趣看看是否有解决方案。
  • 您是否在某个地方的设置中使用了反向代理? (请参阅下面我编辑的答案,了解我问这个的原因。)
  • 我们正在使用 Squid,它(显然)是一个反向代理......我以前从未听说过这个词,所以我需要一段时间来调查

标签: php html drupal internet-explorer-8 internet-explorer-7


【解决方案1】:

在花很多时间检查自己的代码之前,先分析一下所涉及的网络设置。

大约一年前,我们遇到过类似的现象代理服务器在他转发的页面中插入了类似的数字

我不记得它是什么代理服务器以及他为什么这样做的详细信息,但很明显,因为只有从特定网络访问该站点的人才能获得这些数字。

编辑:我不是 100% 确定,但我认为是 this nginx reverse proxy issueThis post 也可能是相关的。)

【讨论】:

  • 这绝对是它 - 4 个十六进制数字出现在来自 Squid 的 403 个禁止上
【解决方案2】:

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

我最好的猜测是,某处有一段调试代码正在打印出一些 id。如果您有任何自己开发的模块/主题,那将是最好的起点。

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

【讨论】:

    【解决方案3】:

    假设您对 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

    【讨论】:

    • 我在调查 Henrik Opel 的建议时在某处看到了这一点。不幸的是,我不准备打扰其他站点在同一 Apache 服务器上运行
    【解决方案4】:

    我不知道是不是同样的问题,但是有一天早上,在所有可能的 drupal 页面上,最底部显示了一个奇怪的代码,我不明白,无论如何这是我前一天晚上创建的页面目的地是一个反馈表,我删除了它,一切都恢复正常了,无论如何,有时候这件事是由于捕获物超载而发生的,只要 phpmyadmin 并清除捕获物,我希望这会有所帮助,se ya!

    【讨论】:

    • 我认为这无关。
    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多