На нескольких страницах моего сайта Drupal таинственный номер появляется выше (EDIT: и ниже) HTML при первом просмотре страницы в (EDIT) в любом браузере. В 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 на страницах с номером в сравнении с страницами, и кроме чисел сверху и снизу единственное различие – это пробел.
Я запускаю Drupal 6.19 в Apache 2.2 на Ubuntu 7.04. Версия 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();
Прежде чем тратить много времени на проверку своего собственного кода, проанализируйте задействованную настройку сети.
У нас было аналогичное явление примерно год назад, когда прокси-сервер вставлял такие номера в страницы, которые он передавал.
Я не помню подробностей о том, что это за прокси-сервер, и почему он это сделал, но это было довольно очевидно, так как только люди, обращающиеся к сайту из определенных сетей, получат эти цифры.
EDIT: Я не уверен на 100%, но я думаю, что это была проблема с обратным прокси-сервером nginx ( эта запись также может быть связана.)
Скорее всего, разметка одинакова для всех браузеров, но только IE отображает ее.
Мое лучшее предположение: где-то есть отладочный код отладки, который печатает какой-то идентификатор. Если у вас есть какие-либо модули / темы, которые вы разработали сами, это будет лучшее место для начала.
Если вы не можете найти источник, вы можете попытаться переключить тему и отключить модули, вы должны быть в состоянии точно определить ее. Сначала попробуйте выполнить поиск кода для инструкции print_r
.
Предполагая, что вы используете обратный прокси для всего доступа к 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
я не знаю, есть ли одна и та же проблема, но однажды утром на всех страницах drupal появился странный код, показанный на самом конце, я не понимал, что это была страница, которую я создал за ночь до того, форму обратной связи, я удалил это и все обратно в норму, так или иначе, что это происходит из-за перегрузки catche, просто сделайте phpmyadmin и очистите catche, я хочу, чтобы это помогло, se ya!