Ошибка headers already sent при работе плагина

У меня возникли некоторые проблемы с ошибкой «заголовки уже отправлены» из плагина 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 &quot;"); echo '&quot; - '; }

Строка 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();
    }
}

И теперь я не знаю, что делать дальше … кто-нибудь может сделать какие-нибудь предложения? Я удалил все пробелы в конце и начале во всех моих файлах темы, но ничего не изменилось. Я также пытался удалить закрывающий тег ?> в конце моего файла плагина.

Кстати, это происходит только на моем работающем сервере, а не на локальном компьютере, поэтому я чувствую, что это может быть проблема с сервером.

Понравилась статья? Поделиться с друзьями:
WPAsk
Ответов: 5
  1. s_ha_dum

    Этот файл должен отправлять вывод. Это не проблема.

  2. Osu

    Вот как у меня настроен дебаг в wp-config.php : define('WP_DEBUG', false); — Я полагаю, вы это имели в виду, а не php.ini?

  3. s_ha_dum

    Какой URL у реального сайта?

  4. s_ha_dum

    Если вы посмотрите на источник страницы, вы увидите это в строке 122:

    <div class="nav-collapse collapse">
                        <br />
    <b>Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at /home1/onesizeu/clients/instrumentalbackgroundmusic.com/wp-includes/functions.php:2841) in <b>/home1/onesizeu/clients/instrumentalbackgroundmusic.com/wp-content/plugins/osu-royaltfreemusic/osu-royaltyfreemusic.php</b> on line <b>225</b><br />
    <br />
    <b>Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home1/onesizeu/clients/instrumentalbackgroundmusic.com/wp-includes/functions.php:2841) in <b>/home1/onesizeu/clients/instrumentalbackgroundmusic.com/wp-content/plugins/osu-royaltfreemusic/osu-royaltyfreemusic.php</b> on line <b>225</b><br />
    <ul id="menu-primary" class="nav"><li id="menu-item-9" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-9"><a href="http://www.instrumentalbackgroundmusic.com/">Home</a></li>
    

    Что-то пытается начать сеанс в глуби тела страницы. Вы не можете этого сделать. Сессии должны быть запущены перед отправкой любого контента в браузер.

    Исправить это концептуально просто — подключить к session_start функцию к некоторому хуку, который выполняется до того, как содержимое будет напечатано Что-то вроде этого:

    function boot_session() {
      session_start();
    }
    add_action('wp_loaded','boot_session');
    
  5. s_ha_dum

    Приведите первые 10 строки своего header.php

Добавить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: