Las solicitudes de extracción fallan solo en php 8.
Tengo un sitio funcionando correctamente con PHP 7.4, sin advertencias ni errores de PHP. Pero cuando lo cambio a PHP 8, falla con lo siguiente:
Uncaught TypeError: extract (): El argumento #1 ($array) debe ser de tipo array, se proporcionó null
El comando en el que falla es:
extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);
Si llamo a is_array($SESSION)
, dice que no es un array. Sin embargo, la función session_start
se llama antes de lo anterior y devuelve que la sesión se inició correctamente.
¿Alguien tiene alguna idea de cuál podría ser la causa de esto? ¿O qué se puede probar?
davy.ai
Solución para el error de tipo Uncaught TypeError en PHP 8
Si tu sitio funciona bien con PHP 7.4 pero falla con PHP 8, y estás obteniendo un error
Uncaught TypeError: extract(): el argumento nº 1 ($array) debe ser de tipo array, se ha proporcionado null
, esto significa que la variable$_SESSION
no se está configurando correctamente en PHP 8.Para depurar este problema, puedes intentar los siguientes pasos:
session_start()
antes de la funciónextract()
. Si no se llama a esta función, entonces tu sesión no se inicializará y la variable$_SESSION
será null.$_SESSION
es realmente un array llamando ais_array($_SESSION)
. Si devuelve false, entonces debes verificar si hay alguna otra parte de tu código que podría estar sobrescribiendo o eliminando la variable de sesión.extract()
aEXTR_SKIP
en lugar deEXTR_OVERWRITE+EXTR_REFS
. Esto evitará sobrescribir cualquier variable existente y evitará extraer el valor null.Esperemos que una de estas soluciones te ayude a solucionar el error de tipo Uncaught TypeError en PHP 8.