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.

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?

Tags:  , ,

Answer

  1. Avatar for 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:

    • Verifica si se está llamando a la función session_start() antes de la función extract(). Si no se llama a esta función, entonces tu sesión no se inicializará y la variable $_SESSION será null.
    • Verifica si $_SESSION es realmente un array llamando a is_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.
    • Cambia el parámetro de extract() a EXTR_SKIP en lugar de EXTR_OVERWRITE+EXTR_REFS. Esto evitará sobrescribir cualquier variable existente y evitará extraer el valor null.
    • Si ninguna de las soluciones anteriores funciona, podría ser un problema de compatibilidad con parte de tu código y PHP 8. En este caso, puedes intentar actualizar tu código para que sea compatible con PHP 8 o volver a PHP 7.4.

    Esperemos que una de estas soluciones te ayude a solucionar el error de tipo Uncaught TypeError en PHP 8.

Comments are closed.