该插件生成了80个字符的意外输出!

时间:2010-11-01 作者:Scott B

每次激活插件时,我都会收到以下消息:

该插件在激活期间生成了80个字符的意外输出。如果您注意到“headers ready sent”消息、联合提要问题或其他问题,请尝试停用或删除此插件

抑制消息的唯一方法是将激活功能代码包装在条件中(**见下文)。

我应该如何重写它以防止警报?

function myPlugin($post)
{
    echo "Whatever is here throws an unexpected output alert when the plugin isa activated";
//I can place code here without issue, but anything that is output via echo throws the alert.
}
register_activation_hook(__FILE__, \'myPlugin\');
将函数代码包装在条件中会抑制警报:

function myPlugin($post)
{
    global $pagenow;
    if ( is_admin() && $pagenow !== \'plugins.php\' ) {
        echo "No more alerts when its wrapped this way";
        }
}
 ?>

6 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

当你收到这种信息时usually means your plugin had a syntax error 由于如何处理激活加载,也就是说,在显示错误消息后发送HTTP标头,所以生成了此类错误消息。插件的错误消息已加载到<iframe>; 你做了什么;查看源“在<iframe> 查看是否有明显的错误消息?

此外,您应该考虑获得一个HTTP调试器,它可以帮助您完成这类工作:

Windows具有卓越的free Fiddler.

对于Mac OS XHTTPScoop (不太好,但在US$15.)

还有Charles 对于Windows/Mac/Linux(US$50 - 也许有一天我会买下来。但愿我能在Mac上找到Fiddler,但由于Fiddler来自微软,我就屏住了呼吸。)

根据下面的评论,这里有一个我使用的屏幕;“检查元件”在Safari中(但您可以对Chrome和FireFox执行相同的操作,也可以对IE和Web开发者工具栏执行类似操作):

Screenshot of Element Inspector on Safari with the WordPress plugin error IFRAMEmikeschinkel.com)

你可以抓住它<iframe>d URL并将其直接加载到浏览器中,以简化调试过程。插件中的某些内容正在发送qheader() after 抛出错误消息,这就是错误消息的含义。

Loading WordPress Plugin Activation URL directly from the browsermikeschinkel.com)

顺便说一句,我刚刚在插件中添加了一个游离字符,因此出现了语法错误,以使插件抛出一个错误,这就是为什么您会看到错误。

SO网友:T.Todua

使用调试:

(创建日志文件error_activation.txt 在插件文件夹中)

add_action(\'activated_plugin\',\'my_save_error\');
function my_save_error()
{
    file_put_contents(dirname(__file__).\'/error_activation.txt\', ob_get_contents());
}

SO网友:kaiser

Sry,对于迟来的答案,我只是偶然发现了,答案很简单:

Never echo反激活/卸载挂钩上使用的函数内部的任何内容。这会always 导致上述错误消息。

SO网友:peter cross

我刚刚研究了这个问题,我发现这个问题可能是由Wordpress支持的php中的错误(比如调用不推荐的函数)引起的,FTP乱码,或者是由“php”标记之外的代码引起的。

我认为迈克的上述说法是不对的。意外输出问题的处理方式与致命错误的处理方式不同,首先,wordpress会抑制该问题,它会发出“意外输出”消息,更重要的是,它确实会激活插件并重定向回插件页面,而如果出现错误,它就会消失。我不认为框架中会有任何有用的东西,我也不认为标题会让你得到wordpress没有预料到的输出,这将为解决潜在问题提供线索。

有许多解决方案可以获取意外的输出文本,这需要对插件进行黑客攻击。php文件或为“activate\\u plugin”操作设置事件处理程序。

FWIW,你可以find my solutions mirror此处(正在工作!)与其他人的解决方案有一些链接,我无耻地借用了这些链接!

SO网友:Aamer Shahzad

我也遇到了同样的问题,我试图删除代码,做了所有的事情,但仍然是同样的问题

对我来说,真正的解决办法如下。

在包含我删除的插件头的文件末尾关闭php?>这个问题将在包含插件头的插件文件末尾得到解决,在关闭php后删除额外的换行符?>我的插件文件在第69行结束,在最后一段php代码之后,还有7个空格,因此在编辑器中,文件的大小达到66,我的错误是“插件生成了7个意外字符…”当我删除了69行之前的额外行时,错误就消失了,

SO网友:lukh

我也有这个问题。插件php文件的编码错误。我只是将整个内容复制到一个新的记事本文件中,并用ansi编码保存它。错误消息dissapeard。当然,现在有语言问题,但这是另一种情况。当做

结束

相关推荐