我正在本站点试用Bad Behavior这个反垃圾评论插件(最新版本为2.01),据说效果很好,而且新版本可以和WP-Cache 2协同工作,能够保护被缓存的页面不受攻击,但这需要修改一下WP-Cache 2,Bad Behavior作者给出的方法如下:
编辑wp-content/plugins/wp-cache/wp-cache-phase1.php这个文件,找到下面的语句(大概在第32行)
if (! ($meta = unserialize(@file_get_contents($meta_pathname))) )
return;
在这条语句后面添加
require_once( ABSPATH . '/wp-content/plugins/bad-behavior/bad-behavior-generic.php');
这样就可以让Bad Behavior支持WP-Cache了。但我使用这种方法后,却出现了下面的Fatal Error:
Warning: require_once(/home/.digger/championeer/championeer.ihackr.com/wp-content/plugins/bad-behavior/bad-behavior-generic.php) [function.require-once]: failed to open stream: No such file or directory in /home/.digger/championeer/championeer.ihackr.com/wp-content/plugins/wp-cache/wp-cache-phase1.php on line 34
Fatal error: require_once() [function.require]: Failed opening required '/home/.digger/championeer/championeer.ihackr.com/wp-content/plugins/bad-behavior/bad-behavior-generic.php' (include_path='.:/usr/local/php5/lib/php') in /home/.digger/championeer/championeer.ihackr.com/wp-content/plugins/wp-cache/wp-cache-phase1.php on line 34
错误在于找不到bad-behavior-generic.php这个文件,也就是问题出在路径上,由于我使用Dreamhost的虚拟主机服务,它们使用Linux系统,而Linux/Unix系统的文件名都是大小写相关的,我查看了Bad Behavior的插件目录,果然有大写字母,实际为wp-content/plugins/Bad-Behavior/bad-behavior-generic.php,可能插件作者并没有注意到这一点,于是将原语句改为:
require_once( ABSPATH . 'wp-content/plugins/Bad-Behavior/bad-behavior-generic.php');
问题解决。