5

我一直在与这个错误作斗争一段时间。错误在函数中的某个地方我现在有 php 告诉我它不能在同一行重新声明一个变量......奇怪。任何帮助都会很棒。

致命错误:无法在 /home/bp-member-login-redirect/bp 中重新声明 bp_block_admin_init()(之前在 /home/bp-member-login-redirect/bp-member-login-redirect-loader.php:31 中声明) -member-login-redirect-loader.php 第 31 行

第 29-31 行

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

实际调用函数的行(我在代码中有或没有这些行时得到错误:

if ( defined( 'BP_VERSION' ) ) {
    bp_block_admin_init();
} else {
    add_action( 'bp_init', 'bp_block_admin_init' );
}
4

5 回答 5

9

确保使用 require_once 以确保不会重复加载 bp-member-login-redirect-loader.php 文件。

require_once '/home/bp-member-login-redirect/bp-member-login-redirect-loader.php';
于 2010-07-26T06:24:49.860 回答
5

register_activation_hook()问题出在加载插件时调用的 WordPress 函数。就我而言,该文件是在没有加载 WordPress 的情况下被包含的。一旦我删除了这些功能,我就不再遇到错误了。

于 2010-07-29T16:49:06.983 回答
2

看起来好像bp_block_admin_init被定义了两次。此代码出现在哪个文件中?是另一个文件require-ing 或include-ing 这个文件多次?

于 2010-07-26T06:25:59.733 回答
2

您很可能bp-member-login-redirect-loader.php不止一次包含在内。例如,以下内容足以重现您的问题:

测试.php

<?php
function foo() {}
?>

test2.php

<?php
include('test.php');
include('test.php'); // Double definition of foo() on test.php:2
?>
于 2010-07-26T06:26:38.360 回答
1

请检查该功能bp_block_admin_init()是否已经存在。

if(!function_exists('bp_block_admin_init'){
  function bp_block_admin_init(){
    //....
  }
}
于 2010-07-26T06:32:21.767 回答