异常'消息头已发送'错误.没有空格,也没有更改标题


Unusual 'Headers already sent' error. No whitespace nor changing of the header

在你开始告诉我这个错误已经有10000000个帖子之前,我知道。

我正在制作一个wordpress插件,在提交编辑页面时收到以下错误:

Warning: Cannot modify header information - headers already sent by (output started at ***'wp-content'plugins'***'meta-class-load.php:1067) in ***'wp-includes'pluggable.php on line 934

这个错误的不同之处在于它所引用的行不与标题接口,也不输出之前的内容。我已经检查了php标签周围的空白,没有:P

这是第1067行的内容(和周围):

        $name = $field['id'];
        $type = $field['type'];
        $old  = $this->get_meta($post->ID, $field); // THIS IS THE LINE
        $new = isset($_POST[$name]) ? $_POST[$name] : ($field['multiple'] ? array() : '');

任何想法或解决方案都会有帮助。谢谢!

在发送HEADER之前不要输出任何东西,如果你这样做,你将无法发送报头,它会抛出一个错误!
在生产服务器上设置error_reporting(0)也是一个很好的做法,以确保在header

之前没有显示错误。

1067是输出内容的行。第934行是设置标题的行。我想你把他们弄反了。

在发送所有报头之前不能发送任何输出。错误中列出的一个文件,或者可能是其中一个文件包含的一个文件,正在输出一些东西。这可能是故意的,一个空白,一个警告或错误信息。

为了防止错误,你可以尝试调用ob_clean();或ob_end_clean ();在头文件调用之前清除输出缓冲区。ob_end_clean ();在这种情况下几乎总是成功的