У меня на сайте установлен модуль 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 включен.
Что делать ?
Комментарии
Это сообщение значит что два разных куска кода пытаются переопределить header (что невозможно, и поэтому php и жалуется)
Переопределение может происходить и если где то просто выводится текст (даже просто пробел) тогда автоматически будут отправлены заголовки для него.
Я сейчас посмотрел phpbb3 файл includes/session.php и я не вижу там ничего что могло бы требовать установки заголовков.
Отправьте этот кусок кода, что рядом со строкой 942 в файле /home/selestasvz/z42.ru/docs/subdmn/forum/includes/session.php
У меня такое было,когда путал чего то в template.php
Только вот как видно по логу, отношения к template.php проблема не имеет.
Это довольно распространенное явление, когда отправка заголовков идет не в самом начале файла. И до этого по ошибке где то выводится текстовая информация (отладка например)
Да, это распространённая ошибка. Проблема заключается в том, что файлы сохранены в UTF-8 кодировке с внедрением UTF-сигнатуры. Надо пересохранить и перезалить php-файлы в UTF-8 без UTF-сигнатуры.
Район 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);
}
/**
попробуй, можно в notepad++, поставить кодировку UTF8 (без BOM)
Та же проблема, когда пытаюсь убрать в template.php из темы дефолтные файлы system.css и defaults.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'] все в порядке, файлов нет, а в хидере есть, и идет эта ошибка.
Помогите, плз