这是库本身的向后不兼容。PHP 8.1 不再允许自动激活 false-y 值
PHP 本机允许自动激活(从错误值自动创建数组)。这个特性非常有用,并在很多 PHP 项目中使用,尤其是在变量未定义的情况下。但是,允许从 false 和 null 值创建数组有点奇怪。
他们举了这个例子
// From false
$arr = false;
$arr[] = 2;
我去找了有问题的文件,这就是它所在的功能
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;
}
问题是它开始于
static $arr = false;
然后尝试自动激活一个非数组(错误中的第 154 行)
$arr['description'] = $arrServerInfo['SQLServerName'].' connected to '.$arrServerInfo['CurrentDatabase'];
您应该能够通过确保它是一个数组来修复它(理论上)(无论如何他们都应该这样做)。在该行上方添加它以使其成为一个,然后再尝试附加
if(!is_array($arr)) $arr = [];