У меня возникли некоторые проблемы с ошибкой «заголовки уже отправлены» из плагина WordPress, который я создал для себя, и теперь я адаптируюсь. Вот она:
Warning: session_start() [function.session-start]: Cannot send session
cache limiter — headers already sent (output started at
/home1/uname/directory/domain.com/wp-content/themes/ibm/header.php:2)
in
/home1/uname/directory/domain.com/wp-content/plugins/osu-rfm/osu-rfm.php
on line 225
В строке 2 файла header.php нет лишних символов:
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html class="ie ie6 no-js" <?php language_attributes(); ?>> <![endif]-->
<!--[if IE 7 ]> <html class="ie ie7 no-js" <?php language_attributes(); ?>> <![endif]-->
<!--[if IE 8 ]> <html class="ie ie8 no-js" <?php language_attributes(); ?>> <![endif]-->
<!--[if IE 9 ]> <html class="ie ie9 no-js" <?php language_attributes(); ?>> <![endif]-->
<!--[if gt IE 9]><!--><html class="no-js" <?php language_attributes(); ?>><!--<![endif]-->
<!-- the "no-js" class is for Modernizr. -->
<head id="osu-rfm" data-template-set="html5-reset-wordpress-theme" profile="http://gmpg.org/xfn/11">
<title>
<?php
if (function_exists('is_tag') && is_tag()) {
single_tag_title("Tag Archive for ""); echo '" - '; }
Строка 225 в osu-rfm.php (кстати, это плагин):
public static function enable_sessions()
{
if( is_post_type_archive( "ibmdirectory" ) || "ibmdirectory" == get_post_type() )
{
if( ! isset( $_SESSION ) )
/*
if(headers_sent($filename, $linenum)) {
//если заголовки уже отправлены, выдать сообщение.
echo "Headers already sent in $filename on line $linenum\n";
} else {
//если заголовки еще не отправлены
echo "New headers";
}
*/
session_start();
}
}
И теперь я не знаю, что делать дальше … кто-нибудь может сделать какие-нибудь предложения? Я удалил все пробелы в конце и начале во всех моих файлах темы, но ничего не изменилось. Я также пытался удалить закрывающий тег ?> в конце моего файла плагина.
Кстати, это происходит только на моем работающем сервере, а не на локальном компьютере, поэтому я чувствую, что это может быть проблема с сервером.
Этот файл должен отправлять вывод. Это не проблема.
Вот как у меня настроен дебаг в
wp-config.php
:define('WP_DEBUG', false);
— Я полагаю, вы это имели в виду, а не php.ini?Какой URL у реального сайта?
Если вы посмотрите на источник страницы, вы увидите это в строке 122:
Что-то пытается начать сеанс в глуби тела страницы. Вы не можете этого сделать. Сессии должны быть запущены перед отправкой любого контента в браузер.
Исправить это концептуально просто — подключить к
session_start
функцию к некоторому хуку, который выполняется до того, как содержимое будет напечатано Что-то вроде этого:Приведите первые 10 строки своего
header.php