Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

678
Vistas
PHP en desuso: la conversión automática de falso a matriz está en desuso adodb-mssqlnative.inc.php en la línea 154

Estamos actualizando PHP a la versión 8.1. Usando la base de datos del servidor MS Sql. Todo parece funcionar correctamente, pero veo mensajes repetidos en el archivo de registro:

[03-feb-2022 11:51:18 America/New_York] PHP en desuso: la conversión automática de falso a matriz está en desuso en C:...\includes\adodb\drivers\adodb-mssqlnative.inc.php en la línea 154

Actualicé adodb a la versión 5.22, pero eso no impidió que se registraran los mensajes. El archivo ini tiene

 extension=php_sqlsrv_81_nts_x64.dll extension=php_pdo_sqlsrv_81_nts_x64.dll

¿Alguien sabe cómo arreglar este problema?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Esta es una incompatibilidad hacia atrás en la propia biblioteca. PHP 8.1 ya no permite la autovivificación de valores falsos-y

PHP permite de forma nativa la autovivificación (creación automática de matrices a partir de valores falsos). Esta función es muy útil y se usa en muchos proyectos de PHP, especialmente si la variable no está definida. Sin embargo, hay una pequeña rareza que permite crear una matriz a partir de un valor falso y nulo.

Y dan este ejemplo

 // From false $arr = false; $arr[] = 2;

Fui y encontré el archivo en cuestión y esta es la función en la que se encuentra

 function ServerInfo() { global $ADODB_FETCH_MODE; static $arr = false; if (is_array($arr)) return $arr; if ($this->fetchMode === false) { $savem = $ADODB_FETCH_MODE; $ADODB_FETCH_MODE = ADODB_FETCH_NUM; } elseif ($this->fetchMode >=0 && $this->fetchMode <=2) { $savem = $this->fetchMode; } else $savem = $this->SetFetchMode(ADODB_FETCH_NUM); $arrServerInfo = sqlsrv_server_info($this->_connectionID); $ADODB_FETCH_MODE = $savem; $arr['description'] = $arrServerInfo['SQLServerName'].' connected to '.$arrServerInfo['CurrentDatabase']; $arr['version'] = $arrServerInfo['SQLServerVersion'];//ADOConnection::_findvers($arr['description']); return $arr; }

El problema es que empieza con

 static $arr = false;

y luego intenta autovivificar una no matriz (línea 154 en su error)

 $arr['description'] = $arrServerInfo['SQLServerName'].' connected to '.$arrServerInfo['CurrentDatabase'];

Debería poder arreglarlo (en teoría) asegurándose de que sea una matriz (algo que deberían haber hecho de todos modos). Agregue esto encima de esa línea para convertirlo en uno antes de que intente agregar

 if(!is_array($arr)) $arr = [];
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda