[SOLVED]
with me this was because my PHP version was earlier than PHP 5.3
I was running 5.2.10 (run ‘php – version’ on the command line)
Apparently PHP 5.3 code changed significantly. This post offers a workaround:
http://ww.wp.xz.cn/support/topic/older-php-problems
It references code here, so as to replace the code in the plugin file ‘ wp-fail2ban.php’:
http://pastebin.com/qLCtmMwz
In case this pastebin file has disappeared, here it is, without the introductory information from Charles Lecklider:
<?php
function f2b_openlog()
{
openlog('wordpress('.$_SERVER['HTTP_HOST'].')',
LOG_NDELAY|LOG_PID,
defined(WP_FAIL2BAN_LOG) ? WP_FAIL2BAN_LOG : LOG_AUTH);
}
function f2b_bail()
{
ob_end_clean();
header('HTTP/1.0 403 Forbidden');
header('Content-Type: text/plain');
exit('Forbidden');
}
function f2b_remote_addr()
{
if (defined('WP_FAIL2BAN_PROXIES')) {
if (array_key_exists('HTTP_X_FORWARDED_FOR',$_SERVER)) {
$ip = ip2long($_SERVER['REMOTE_ADDR']);
foreach(explode(',',WP_FAIL2BAN_PROXIES) as $proxy) {
if (2 == count($cidr = explode('/',$proxy))) {
$net = ip2long($cidr[0]);
$mask = ~ ( (2 ^ (32 - $cidr[1])) - 1 );
} else {
$net = ip2long($proxy);
$mask = -1;
}
if ($net == $ip & $mask) {
return (false===($len = strpos($_SERVER['HTTP_X_FORWARDED_FOR'],',')))
? $_SERVER['HTTP_X_FORWARDED_FOR']
: substr($_SERVER['HTTP_X_FORWARDED_FOR'],0,$len);
}
}
}
}
return $_SERVER['REMOTE_ADDR'];
}
function f2b_blocked_users($user, $username, $password){
if (!empty($username) && preg_match('/'.WP_FAIL2BAN_BLOCKED_USERS.'/i', $username)) {
f2b_openlog();
syslog(LOG_NOTICE,"Blocked authentication attempt for $username from ".f2b_remote_addr());
f2b_bail();
}
return $user;
}
function f2b_block_user_enumeration($redirect_url, $requested_url){
if (intval(@$_GET['author'])) {
f2b_openlog();
syslog(LOG_NOTICE,'Blocked user enumeration attempt from '.f2b_remote_addr());
bail();
}
return $redirect_url;
}
function f2b_login($user_login, $user){
f2b_openlog();
syslog(LOG_INFO,"Accepted password for $user_login from ".f2b_remote_addr());
}
function f2b_login_failed($username){
f2b_openlog();
syslog(LOG_NOTICE,"Authentication failure for $username from ".f2b_remote_addr());
}
if (defined('WP_FAIL2BAN_BLOCKED_USERS')) {
add_action( 'authenticate','f2b_blocked_users',1,3);
}
if (defined('WP_FAIL2BAN_BLOCK_USER_ENUMERATION')) {
add_filter( 'redirect_canonical','f2b_block_user_enumeration',10,2);
}
add_action( 'wp_login','f2b_login',10,2);
add_action( 'wp_login_failed','f2b_login_failed');