php – 无法修改WordPress中的标题信息错误

参见英文答案 > How to fix “Headers already sent” error in PHP                                    11个
尝试登录管理面板时,我遇到了这个错误.我无法理解它.

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备份2)似乎已触发此问题.我已经使用HTML-kit工具检查了wp.config文件,并且在文件的开头和结尾都没有可见的空格.我有:

>使用HTML-Kit工具检查wp-config文件中的空格
>下载并插入新的新wp-config文件
>通过重命名禁用插件目录

……而且错误仍然存​​在

我唯一要尝试的是这个代码,有人发布在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 . '/';

    }

}

?>

解决方法:

如果你有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();
}

如何删除BOM

为了删除BOM,Lafontaine建议使用免费的十六进制编辑器免费软件实用程序XVI32.编辑器无法安装,您可以直接从ZIP运行EXE文件.这个过程很简单 – 只需将“受影响的”PHP文件(在我的情况下为wp_config.php)拖到XVI32中,它就会以一个整齐的字节网格打开.然后,您应该看到文件中的前三个字节是“”,后跟php标记.

如果确实如此,则应依次选择每个字符并将其删除(按Del键).然后,当您保存(Ctrl S)文件时,它将与以前完全相同,只有没有前导BOM.

完整文章链接:
http://blog.scribz.net/2010/12/windows-live-writer-wordpress-unicode-bom-error/

上一篇:Oracle12c创建及删除PDB


下一篇:3款新鲜的CSS3&HTML5框架