class_exists():不赞成将null传递给字符串类型的参数#1($class)



我有这个新安装的Yii2高级版,想知道你们中是否有人在从前端登录后遇到过这个错误?

你采取了什么解决方案来解决这个问题?

下面是我的composer.json

{
"name": "yiisoft/yii2-app-advanced",
"description": "Yii 2 Advanced Project Template",
"keywords": ["yii2", "framework", "advanced", "project template"],
"homepage": "http://www.yiiframework.com/",
"type": "project",
"license": "BSD-3-Clause",
"support": {
"issues": "https://github.com/yiisoft/yii2/issues?state=open",
"forum": "http://www.yiiframework.com/forum/",
"wiki": "http://www.yiiframework.com/wiki/",
"irc": "irc://irc.freenode.net/yii",
"source": "https://github.com/yiisoft/yii2"
},
"minimum-stability": "stable",
"require": {
"php": ">=5.6.0",
"yiisoft/yii2": "~2.0.14",
"yiisoft/yii2-bootstrap4": "~2.0.0",
"yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0"
},
"require-dev": {
"yiisoft/yii2-debug": "~2.1.0",
"yiisoft/yii2-gii": "~2.2.0",
"yiisoft/yii2-faker": "~2.0.0",
"codeception/codeception": "^4.0",
"codeception/module-asserts": "^1.0",
"codeception/module-yii2": "^1.0",
"codeception/module-filesystem": "^1.0",
"codeception/verify": "~0.5.0 || ~1.1.0",
"symfony/browser-kit": ">=2.7 <=4.2.4"
},
"config": {
"process-timeout": 1800,
"fxp-asset": {
"enabled": false
}
},
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.org"
}
]
}

从php8.1开始,您就不能在class_exists函数中放入null值。要解决此问题,请在文件\vendor\yiisoft\yii2-debug \src\panels\UserPanel.php中替换第90/91行

if (!is_object($this->filterModel)
&& class_exists($this->filterModel)

带有

if (!is_object($this->filterModel) && $this->filterModel !== null
&& class_exists($this->filterModel)

这不是一个好的解决方案,因为我们正在编辑yii的源代码,但有效:(Yii的2.0.46版本可能会修复这个

Yii2似乎与PHP 8.1版本不兼容。我不得不在我的macbook 中回到PHP的7.4版本

它在634b9cc5e89bcc65091fe25ea2b5538b5bc5ce76中被修复,所以当新版本发布时,它将被修复,同时您可以使用"yiisoft/yii2-debug":"dev master#">

https://github.com/yiisoft/yii2-debug/issues/482

最新更新