es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PHP SessionHandler->write dice que no se proporciona ningún array o string, pero se proporciona un string.

Estoy ejecutando PHP 7.4.26 (cli) (construido: Nov 22 2021 09:47:55) (NTS) y estoy utilizando una instancia de la clase base PHP \SessionHandler.

Cuando llamo a

$sessionHandler->write($id, $data);

Obtengo un mensaje de error como sigue:

Advertencia de PHP: Callback no válido, no se proporciona una matriz o una cadena en /var/www/source/typo3conf/ext/my_authentication/Classes/Service/SessionHandler.php línea 43

Con

$id = 'myAuthenticationData';
$data = 'a:1:{s:15:"someSession";s:26:"fb88d1daf0ffaff15d34a6c961;"}';

¿Qué debo cambiar para poder escribir en la sesión? Claramente estoy proporcionando dos cadenas al método write de esta clase base.

37:     $object = [
38:         'someSession' => 'fb88d1daf0ffaff15d34a6c961';
39:     ];
40:     $this->sessionHandler = new \SessionHandler();
41:     $this->sessionHandler->open('authentication', 'user');
42:     $sessionData = serialize($object);
43:     $this->sessionHandler->write('myAuthenticationData', $sessionData);
Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la función de callback que se pasa al método write no es válida. En el fragmento de código proporcionado, no se está pasando ninguna función de callback, por lo que es probable que el error sea causado por algún otro código fuera del fragmento proporcionado.

    Suponiendo que el error no esté relacionado con el código proporcionado y, dado que el método write toma dos cadenas como argumentos, es posible que las variables $id y $data proporcionadas no estén formateadas correctamente como cadenas.

    Según el código proporcionado, parece que $data es un objeto serializado que contiene datos de sesión. La variable $id también debería ser una cadena que contenga el identificador de la sesión que se está escribiendo. Es posible que esta cadena no esté formateada correctamente y esté causando el error.

    Sin más información y análisis del código y el mensaje de error, es difícil determinar la causa exacta del problema o proporcionar una solución específica.

Comments are closed.