Невозможно изменить информацию об ошибке заголовка в Wordpress

Я застрял с этой ошибкой при попытке войти в панель администратора. Я не могу понять это.

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxxxx/public_html/wordpress/wp-config.php:1) in /home/xxxxxx/public_html/wordpress/wp-includes/pluggable.php on line 881

pluggable.php 881:

function wp_redirect($location, $status = 302) {
global $is_IIS;

$location = apply_filters('wp_redirect', $location, $status);
$status = apply_filters('wp_redirect_status', $status, $location);

if ( !$location ) // allows the wp_redirect filter to cancel a redirect
    return false;

$location = wp_sanitize_redirect($location);

if ( !$is_IIS && php_sapi_name() != 'cgi-fcgi' )
    status_header($status); // This causes problems on IIS and some FastCGI setups

header("Location: $location", true, $status);
}
endif;

Я использую последнюю версию wordpress 3.4.2. Мой сайт, кажется, работает нормально, но ошибка не позволяет мне войти на страницу входа, что означает, что я вообще не могу администрировать или удалить плагин (dbc backup 2), который, похоже, вызвал эту проблему. Я сотни раз проверял файл wp.config с помощью инструментов HTML-kit, и ни в начале, ни в конце файла не было видимых пробелов. У меня есть:

  1. Проверены пробелы в файле wp-config с помощью инструментов HTML-Kit.
  2. Скачал и вставил новый свежий файл wp-config
  3. Отключил каталог плагинов, переименовав его

...и ошибка осталась

Единственное, что мне осталось попробовать, это этот код, который кто-то разместил на форумах WordPress, утверждая, что он решил эту проблему, вставив следующий код в файл wp-config.php:

    <?
//dont use header function in wordpress-wp_signup.php
global $domain;
global $path;
//change urlnew variable as per requirment
$urlnew = "http://".$domain.$path."/wp-admin/admin.php;

echo "<script>";
echo "location = '$urlnew';";
echo "</script>";
echo $urlnew;
?>

Я не хочу добавлять код, так как я не знаком с html или php, и я не совсем понимаю, как этот код работает, и у меня нет подробных инструкций, где именно его разместить. Любые лучшие предложения?


Файл темы function.php заканчивается так, куда именно я должен вставить код?:

// include custom widget

$temp_root = get_root_directory('include/plugin/custom-widget/custom-blog-widget.php');

include_once($temp_root . 'include/plugin/custom-widget/custom-blog-widget.php'); 

$temp_root = get_root_directory('include/plugin/custom-widget/custom-port-widget.php');

include_once($temp_root . 'include/plugin/custom-widget/custom-port-widget.php'); 

$temp_root = get_root_directory('include/plugin/custom-widget/custom-port-widget-2.php');

include_once($temp_root . 'include/plugin/custom-widget/custom-port-widget-2.php'); 

$temp_root = get_root_directory('include/plugin/custom-widget/popular-post-widget.php');

include_once($temp_root . 'include/plugin/custom-widget/popular-post-widget.php'); 

$temp_root = get_root_directory('include/plugin/custom-widget/contact-widget.php');

include_once($temp_root . 'include/plugin/custom-widget/contact-widget.php'); 

$temp_root = get_root_directory('include/plugin/custom-widget/flickr-widget.php');

include_once($temp_root . 'include/plugin/custom-widget/flickr-widget.php'); 

$temp_root = get_root_directory('include/plugin/custom-widget/twitter-widget.php');

include_once($temp_root . 'include/plugin/custom-widget/twitter-widget.php');



// get the path for the file ( to support child theme )

function get_root_directory( $path ){

    if( file_exists( STYLESHEETPATH . '/' . $path ) ){

        return STYLESHEETPATH . '/';

    }else{

        return TEMPLATEPATH . '/';

    }

}

?>

person user1692154    schedule 23.09.2012    source источник
comment
Удалите начальные пробелы перед <?, и это должно работать.   -  person Gumbo    schedule 23.09.2012
comment
Как я уже упоминал, нет начальных пробелов в редакторе инструментов notepad ++ или HTML и сохраняется в ANSI. Чтобы пробежаться с ним еще дальше, я даже скачал файл еще раз и залил только нужные части.   -  person user1692154    schedule 24.09.2012


Ответы (3)


Если у вас есть файл functions.php в вашем текущем каталоге темы, сделайте, как показано ниже, в свой файл functions.php

//allow redirection, even if your theme starts to send output to the browser
add_action('init', 'clean_output_buffer');
function clean_output_buffer() {
        ob_start();
}

КАК удалить спецификацию

Чтобы удалить спецификацию, Лафонтен предлагает использовать бесплатную утилиту XVI32, бесплатный шестнадцатеричный редактор. Редактор не устанавливается, можно просто запустить EXE-файл прямо из ZIP-архива. Процесс прост — просто перетащите ваш «зараженный» PHP-файл (в моем случае wp_config.php) в XVI32, и он откроется в аккуратной байтовой сетке. Затем вы должны увидеть, что самые первые три байта в файле — это «ï»¿», за которыми следует тег php.

Если это действительно так, то следует выделять каждый символ по очереди и просто удалять его (нажимая клавишу Del). Когда вы затем сохраните (Ctrl+S) файл, он будет полностью таким же, как и раньше, только без ведущей спецификации.

Полная ссылка на статью: http://blog.scribz.net/2010/12/windows-live-writer-wordpress-unicode-bom-error/

person GBD    schedule 23.09.2012
comment
Я не мог заставить его работать. У меня нет опыта в программировании. Куда мне его поставить? - person user1692154; 24.09.2012
comment
добавьте мой код ответа чуть выше функции get_root_directory($path) этой строки в ваш файл function.php - person GBD; 24.09.2012
comment
Я редактировал файл темы с помощью редактора кода c-panels в UTF-8. Неудачно. Я очень расстраиваюсь из-за этого вопроса. Я попытался даже отключить тему и плагины, временно переименовав их, а также добавив базовую тему WordPress двадцать одиннадцать в новый каталог тем, но ошибка остается. Я понятия не имею, куда идти отсюда. - person user1692154; 24.09.2012
comment
Вы можете вставить отредактированный файл function.php на codepad.org? - person GBD; 24.09.2012
comment
После удара головой о стену я решил открыть файл конфигурации в формате ansi (1983), и он выглядел примерно так: ʼn»¿‹?php` Я не уверен, что это точные символы, связанные с BOM, но это соответствовало бы с ошибкой (строка php: 1) Моя проблема в том, что я не могу редактировать файл в ansi, так как почти все остальные данные не видны. Любые предложения, как избавиться от первых 3 символов с помощью редактора кода c-panel? - person user1692154; 24.09.2012
comment
... Я не могу отблагодарить вас достаточно. После 15 часов полнейшего отчаяния наконец починили. Блокнот, блокнот ++ и набор инструментов html и т. Д. Просто не могли его обнаружить, а советы по устранению неполадок Wordpress CODEX использовать блокнот, чтобы избавиться от него ... По меньшей мере, ошеломляет. - person user1692154; 25.09.2012

это очень распространенная проблема в wordpress, добавьте это:

<?php ob_start(); ?>

вверху страницы. Удачного кодирования!!

person Gaurav    schedule 24.09.2012
comment
нет необходимости редактировать файл wp_config. просто поместите его вверху страницы, где вы пишете header(location: your_url); - person Gaurav; 24.09.2012
comment
редактирование в основных файлах WordPress — это совсем нехорошо. - person Gaurav; 24.09.2012
comment
Прошу прощения за свое невежество, но у меня нет никакого опыта в программировании. О какой именно странице вы говорите? Тем не менее, я открыл файл конфигурации в ansi (1983), и он выглядел примерно так: ʼn»¿‹?php` Я не уверен, что это точные символы, связанные со спецификацией, но это соответствовало бы ошибке (строка php: 1) Моя проблема в том, что я не могу редактировать файл в формате ansi, так как почти все остальные данные не видны. Любые предложения, как избавиться от первых 3 символов с помощью редактора кода c-panel, или мне следует согласиться с вашим первоначальным предложением? - person user1692154; 24.09.2012
comment
в папке вашей темы wordpres вы можете увидеть много файлов. вот файл (файл шаблона), который вы включаете на свою страницу. просто поместите эту строку в самый верх файла. еще один, если вы ничего не получите, попробуйте найти header.php и поместите туда эту строку кода. надеюсь, это имеет смысл. - person Gaurav; 24.09.2012
comment
Найден файл header.php. Вставил код в первую строку над ‹!DOCTYPE html›. Нет успеха. Вы не думаете, что символы, отображаемые при открытии конфигурационного файла ansi, являются реальной причиной этой ошибки и могут быть быстро устранены? - person user1692154; 24.09.2012
comment
еще одна вещь, вы можете добавить код javscript для этого, если ob_start не работает. замените заголовок (location:abc.php) на этот код: ‹script type=javascript›window.location(abc.php)‹/script› - person Gaurav; 04.10.2012
comment
Хорошее решение. Это решило мою проблему. - person Mayeenul Islam; 12.01.2013
comment
Это ужасное предложение. Зачем включать буферизацию вывода в начале каждой загрузки страницы? Ты просто обматываешь его проблему изолентой. - person Chris_O; 12.01.2013

Это похоже на проблему, с которой я сталкивался в других приложениях. Видите ли вы символы  где-нибудь в выводе страницы? Возможно, у вас возникли проблемы с маркерами порядка байтов. http://en.wikipedia.org/wiki/Byte_order_mark Они зависят от кодировки файл. Я точно не помню, как я решил эту проблему, но попробуйте сохранить файл в UTF-8? Или, возможно, каким-то образом сообщите своему веб-серверу, что файлы имеют формат ANSI?

person jcbwlkr    schedule 24.09.2012
comment
Привет Джейкоб и спасибо за ваш ответ. Я не смог обнаружить никаких спецификаций/пробелов. Раньше я использовал HTML texk kit и notepad++ при переносе с помощью Filezilla, но теперь я использую редактор кода c-panel в UTF-8. - person user1692154; 24.09.2012
comment
Ok. Я нашел спецификацию, когда открыл файл в ANSI (1983). Однако проблема остается, поскольку единственное, что я вижу, это спецификация и пара начальных строк: ʼn»¿<?php /** * WordPressin perusasetukset. * * T Спецификация не видна в UTF-8, и я не могу редактировать файл в ANSI. Как избавиться от этого раздражения? - person user1692154; 24.09.2012