Задолбало: Cannot modify header information

Главные вкладки

Аватар пользователя selestasvz selestasvz 19 декабря 2008 в 6:39

У меня на сайте установлен модуль phpbbforum и постоянно в системных записях и на главной странице сайта в журнал вылезает такое:

Cannot modify header information - headers already sent by (output started at /home/selestasvz/z42.ru/docs/subdmn/ecosib/modules/node/node.module:1727) в файле /home/selestasvz/z42.ru/docs/subdmn/forum/includes/session.php в строке 942.

Отправка запросов провайдером не запрещена (идет обновление RSS по Хрону), но при этом каждый день в Логах присутствует по нескольку раз. Модуль curl в PHP включен.

Что делать ?

Комментарии

Аватар пользователя Gildor Gildor 19 декабря 2008 в 12:54

Это сообщение значит что два разных куска кода пытаются переопределить header (что невозможно, и поэтому php и жалуется)
Переопределение может происходить и если где то просто выводится текст (даже просто пробел) тогда автоматически будут отправлены заголовки для него.

Я сейчас посмотрел phpbb3 файл includes/session.php и я не вижу там ничего что могло бы требовать установки заголовков.
Отправьте этот кусок кода, что рядом со строкой 942 в файле /home/selestasvz/z42.ru/docs/subdmn/forum/includes/session.php

Аватар пользователя Gildor Gildor 19 декабря 2008 в 13:31

"volocuga" wrote:
У меня такое было,когда путал чего то в template.php

Только вот как видно по логу, отношения к template.php проблема не имеет.

Это довольно распространенное явление, когда отправка заголовков идет не в самом начале файла. И до этого по ошибке где то выводится текстовая информация (отладка например)

Аватар пользователя batbug batbug 19 декабря 2008 в 15:06

Да, это распространённая ошибка. Проблема заключается в том, что файлы сохранены в UTF-8 кодировке с внедрением UTF-сигнатуры. Надо пересохранить и перезалить php-файлы в UTF-8 без UTF-сигнатуры.

Аватар пользователя selestasvz selestasvz 19 декабря 2008 в 16:35

Район 942 строки:

/**
* Sets a cookie
*
* Sets a cookie of the given name with the specified data for the given length of time. If no time is specified, a session cookie will be set.
*
* param string $name Name of the cookie, will be automatically prefixed with the phpBB cookie name. track becomes [cookie_name]_track then.
* param string $cookiedata The data to hold within the cookie
* param int $cookietime The expiration time as UNIX timestamp. If 0 is provided, a session cookie is set.
*/
function set_cookie($name, $cookiedata, $cookietime)
{
global $config;

$name_data = rawurlencode($config['cookie_name'] . '_' . $name) . '=' . rawurlencode($cookiedata);
$expire = gmdate('D, d-M-Y H:i:s \\G\\M\\T', $cookietime);
$domain = (!$config['cookie_domain'] || $config['cookie_domain'] == 'localhost' || $config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $config['cookie_domain'];

942 строка: header('Set-Cookie: ' . $name_data . (($cookietime) ? '; expires=' . $expire : '') . '; path=' . $config['cookie_path'] . $domain . ((!$config['cookie_secure']) ? '' : '; secure') . '; HttpOnly', false);
}

/**

Аватар пользователя Yust_os Yust_os 20 декабря 2008 в 13:01

Та же проблема, когда пытаюсь убрать в template.php из темы дефолтные файлы system.css и defaults.css

  $css =& drupal_add_css();
  unset($css['all']['module']['modules/system/system.css']);
  unset($css['all']['module']['modules/system/defaults.css']);
  $vars['styles'] = drupal_get_css($css);

В $vars['styles'] все в порядке, файлов нет, а в хидере есть, и идет эта ошибка.
Помогите, плз Smile