
通过F12打开调试窗口可以看到报错信息如下

Application error ------ Message: Zend_Session::start() - /www/wwwroot/lin.apuxi.cn/system/Zend/Db/Table/Abstract.php(Line:1307): Error #2 count(): Parameter must be an array or an object that implements Countable /www/wwwroot/lin.apuxi.cn/system/Zend/Db/Table/Abstract.php(Line:1307): Error #2 count(): Parameter must be an array or an object that implements Countable File: /www/wwwroot/lin.apuxi.cn/system/Zend/Session.php Line: 495 ------ Build: 3.1.9 20160523 PHP Version: 7.4.33 URI: / User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0 Accept Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 IP Address: 117.85.64.149 ------ #0 /www/wwwroot/lin.apuxi.cn/system/aws_app.inc.php(147): Zend_Session::start() #1 /www/wwwroot/lin.apuxi.cn/system/aws_app.inc.php(56): AWS_APP::init() #2 /www/wwwroot/lin.apuxi.cn/index.php(23): AWS_APP::run() #3 {main}
错误根源
错误出在 Zend_Db/Table/Abstract.php 文件的第 1307 行,这里的count()函数接收了一个无效参数。在 PHP 5.6 及之前的版本中,对非数组或非 Countable 对象使用count()函数只会返回 0,同时产生一个 E_WARNING 级别的错误;但到了 PHP 7.2 及之后的版本,这种情况会导致 E_WARNING 错误,而在 PHP 7.4 中则会直接引发致命错误。
解决办法
你需要对 Zend_Db/Table/Abstract.php 文件进行修改,在使用count()函数之前先对参数进行类型检查。下面是修改建议


// 修改后的代码
if (!is_array($keyValues) && !($keyValues instanceof Countable)) {
$keyValues = []; // 将非数组/非Countable转换为空数组
}
$keyValuesCount = count($keyValues);

159

被折叠的 条评论
为什么被折叠?



