Error fatal: no se puede volver a declarar que sucede en la misma línea

2 minutos de lectura

avatar de usuario
Brooke.

He estado luchando con este error por un tiempo. El error está en alguna parte de la función. Ahora tengo php diciéndome que no puede volver a declarar una variable en la misma línea… extraño. Cualquier ayuda sería genial.

Error fatal: no se puede volver a declarar bp_block_admin_init() (anteriormente declarado en /home/bp-member-login-redirect/bp-member-login-redirect-loader.php:31) en /home/bp-member-login-redirect/bp -member-login-redirect-loader.php en la línea 31

líneas 29-31

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

las líneas realmente llaman a la función (obtengo el error con o sin estas líneas en el código:

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

  • Desafortunadamente, PHP solo puede decirle dónde se intenta definir la función. No tiene nada que ver con el código que ejecuta esa función, por lo que eliminar el código que llama a esa función no tiene ningún efecto. Por favor, publique el resto del guión.

    –Mike Sherov

    26 de julio de 2010 a las 12:28

avatar de usuario
Ben Rowe

Asegúrese de usar require_once para asegurarse de que no está cargando dos veces el archivo bp-member-login-redirect-loader.php.

require_once '/home/bp-member-login-redirect/bp-member-login-redirect-loader.php';

avatar de usuario
Brooke.

El problema estaba en la función de WordPress. register_activation_hook() que se llama cuando se carga un complemento. En mi caso, el archivo estaba siendo incluido sin cargar WordPress. Una vez que eliminé las funciones, ya no recibí un error.

Parece que bp_block_admin_init se define dos veces. ¿En qué archivo aparece este código? es otro archivo require-ing o include-ing este archivo varias veces?

Lo más probable es que estés incluyendo bp-member-login-redirect-loader.php mas de una vez. Por ejemplo, lo siguiente es suficiente para reproducir su problema:

prueba.php

<?php
function foo() {}
?>

prueba2.php

<?php
include('test.php');
include('test.php'); // Double definition of foo() on test.php:2
?>

Por favor, compruebe si la función bp_block_admin_init() ya existe o no.

if(!function_exists('bp_block_admin_init'){
  function bp_block_admin_init(){
    //....
  }
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad