我们正在将PHP升级到8.1版。使用。这一切似乎都是正确的,但我在日志文件中看到了重复的消息:
03-2022 11:51:18美国/纽约PHP取消推荐:在第154行的C:...\includes\adodb\drivers\adodb-mssqlnative.inc.php中不推荐自动将false转换为数组
我已经将adodb更新到版本5.22,但这并没有阻止混乱的日志记录。ini文件
extension=php_sqlsrv_81_nts_x64.dll
extension=php_pdo_sqlsrv_81_nts_x64.dll有人知道如何解决这个问题吗?
发布于 2022-02-08 14:24:27
这是一个向后不兼容的已知问题,影响了ADOdb库5.22.1和更高版本。PHP8.1警告您对假-y值的自动生动化。和一些未来版本的PHP在执行时会抛出一个错误。
PHP本机允许自动生动化(从falsey值自动创建数组)。这个特性非常有用,并在许多PHP项目中使用,特别是在变量未定义的情况下。但是,有一点奇怪,允许从假值和空值创建数组。
他们举了个例子
// 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 = [];发布于 2022-12-03 20:34:49
试着添加:
if(!is_array($yourarray)) $yourarray = [];因为
https://stackoverflow.com/questions/71035322
复制相似问题