[SOLUCIONADO] Error al cerrarse la sesión de toba

Buen día comunidad

Estoy teniendo un error raro al cerrarse la sesión de toba:

Using $this when not in object context

Adicionalmente hay que borrar todas las ‘cookies’ del navegador para poder reingresar sin el error si se quiso cambiar de proyecto antes de que se muestre el error., o sea si estoy en un proyecto y se cierra la sesión, da error, cierro el navegador y reingreso sin problemas pero si se cierra la sesión y quiero cambiar de proyecto, tengo que borrar las ‘cookies’ para poder reingresar.

Estoy usando toba 3.3 y php 7.4.26

Gracias y saludos

Lo que detecté es que no puede enviar el mensaje al asuario porque no hay instancia de toba, paso las lineas que para mi generan el error:

En toba_majedor_sesiones.php


/**
*	Controla el cierre de la sesion.
*/
private function control_finalizacion_sesion()
...
...
/*
toba::notificacion('Usted ha permanecido varios minutos sin interactuar
							con el servidor. Por razones de seguridad su sesion ha sido eliminada.
							Por favor vuelva a registrarse si desea continuar utilizando el sistema.
							Disculpe las molestias ocasionadas.');
				
toba_logger::error("Se exedio la ventana temporal ($ventana m.)");
*/

Si comento esa fracción de código, se loggea el error y lleva al login del proyecto, si no da el error :

Using $this when not in object context

Hola Oscar,

por el msg de error en cuestion pareciera que se dispara al hacer una invocacion estatica del manejador de sesiones, de otra forma $this-> tiene que existir siempre ya que esta instanciado el objeto.

Yo buscaria alguna invocacion estatica de dicha clase en el proyecto, ya que el tramo de codigo que comentaste pertenece a una funcion privada por lo que no puede ser invocada directamente y el unico metodo que la invoca no es estatico.

Puntualmente buscaria una invocacion a toba_manejador_sesiones::iniciar() ya que deberia ser la que este reventando.

Cualquier otra cosa que encuentres avisame!

Saludos

Hola Oscar y Richard, espero que tengan un buen inicio de año.
Nosotros teníamos un proyecto que funcionaba sin problemas en un entorno con estas características:
toba 3.3.6
apache 2.4.36
php-7.3.16

Actualmente migramos el proyecto a una nueva instancia de toba en un nuevo servidor con las siguientes características y comenzó a lanzar el error que indica oscar cuando la sesión expira.
toba 3.3.21
apache 2.4.51
php-7.4.25

Aplicamos la solución que indica Oscar, comentando las líneas de código del archivo toba_manejador_sesiones.php

No hemos realizado ningún cambio sobre el proyecto y tampoco invocamos al método toba_manejador_sesiones::iniciar(). Mi pregunta es si será la versión de php o la versión de toba.

Saludos

Hola Roberto,

estoy sospechando de una posible causa, el tema es que no puedo reproducir el bug (quizas haya alguna diferencia de PHP ya que estoy con 7.4.6) con lo cual se me complica verificar si sirve o no como solucion y si es la raiz del problema.

La linea en cuestion a la que estoy apuntando es esta.

Alli deberia decir


toba_logger::instancia()->error("Se exedio la ventana temporal ($ventana m.)");

Y es un cambio que se introdujo en 3.3.21 con lo cual podria ser la causa, ademas explicaria porque Oscar soluciono el tema comentando esa seccion aun cuando se invoca dinamicamente.

Si me haces el favor de probar modificando dicha linea nomas y dejando el resto sin comentar como para verificar si soluciona o no el tema te lo agradeceria, mientras trato de actualizar la rama de PHP de la distro asi veo si puedo reproducirlo.

@Obelgran Oscar, te pido lo mismo que a Roberto por ahora… igual voy a esperar a reproducirlo antes de sacar version.

Saludos y gracias por el aviso.

Hola Richard, gracias por tu respuesta.

Apliqué el cambio sugerido y funciona.

toba_logger::instancia()->error("Se exedio la ventana temporal ($ventana m.)");

Muchas gracias.

Hola Roberto y Oscar,

acabo de liberar la version 3.3.23 con el fix para el bug que dejaba inutilizable la aplicacion, finalmente pude reproducir el problema.

Gracias por el aviso :slight_smile:

Gracias Richard!!!