5

I have been fighting with this error for a while. The error is somewhere in the function I now have php telling me it can't redeclare a variable on the same line... strange. Any help would be great.

Fatal error: Cannot redeclare bp_block_admin_init() (previously declared in /home/bp-member-login-redirect/bp-member-login-redirect-loader.php:31) in /home/bp-member-login-redirect/bp-member-login-redirect-loader.php on line 31

lines 29-31

// make sure buddypress is installed
function bp_block_admin_init() {
    require_once( dirname( __FILE__ ) . '/bp-member-login-redirect-core.php' );
}

the lines actually calling the function (i get the error with or without these lines in the code:

if ( defined( 'BP_VERSION' ) ) {
    bp_block_admin_init();
} else {
    add_action( 'bp_init', 'bp_block_admin_init' );
}
Brooke.
  • 3,691
  • 13
  • 49
  • 80
  • Unfortunately, PHP can only tell you where the function is attempting to be defined. It has nothing to do with code that executes that function, which is why removing the code that calls that function has no effect. Please post the rest of the script. – Mike Sherov Jul 26 '10 at 12:28

5 Answers5

9

Make sure you use require_once to ensure you're not double loading the bp-member-login-redirect-loader.php file.

require_once '/home/bp-member-login-redirect/bp-member-login-redirect-loader.php';
Ben Rowe
  • 28,406
  • 6
  • 55
  • 75
6

The problem was with the WordPress function register_activation_hook() which is called when a plugin is loaded. In my case, the file was being included without WordPress loading. Once I removed the functions I no longer got an error.

Brooke.
  • 3,691
  • 13
  • 49
  • 80
2

It looks like bp_block_admin_init is being defined twice. In what file does this code appear? Is another file require-ing or include-ing this file multiple times?

Matt Huggins
  • 81,398
  • 36
  • 149
  • 218
2

Most likely you're including bp-member-login-redirect-loader.php more than once. For example, the following is sufficient to reproduce your problem:

test.php

<?php
function foo() {}
?>

test2.php

<?php
include('test.php');
include('test.php'); // Double definition of foo() on test.php:2
?>
Michael Mrozek
  • 169,610
  • 28
  • 168
  • 175
  • That's totally what's happening I just don't see where as I'm not including the file more than once unless I'm missing something.. – Brooke. Jul 26 '10 at 06:31
1

Please check it whether the function bp_block_admin_init() is already exists or not.

if(!function_exists('bp_block_admin_init'){
  function bp_block_admin_init(){
    //....
  }
}
Sadat
  • 3,493
  • 2
  • 30
  • 45