Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

400
Views
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 answers
Answer question

0

Este es un problema conocido de incompatibilidad con versiones anteriores que afecta a la biblioteca ADOdb versión 5.22.1 y anteriores. PHP 8.1 le advierte sobre la autovivificación de valores falsos y alguna versión futura de PHP arrojará un error cuando lo haga.

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!