yii2 2.0.5 版本在 PHP 7.3.2 下运行报错:Parameter must be an array or an object that implements Countable
如题,禾匠小程序 2.9.35
项目使用 yii2 2.0.5
版本,在 linux 服务器 php 5.6
的环境下运行良好,当转战到本地安装后(win7
xampp
php 7.3.2
),跳转子商城管理后台时报错:
PHP Warning – yii\base\ErrorException
count(): Parameter must be an array or an object that implements Countable
1. in D:\Projects\webservice_xcx\vendor\yiisoft\yii2\db\QueryBuilder.php at line 1249
...
if ($column instanceof \Traversable || count($column) > 1) {
...
从错误等级来看,这只是一个警告,之所以抛出警告,是因为本地设置的 debug
模式有关,具体设置项位于 .env
文件中:
...
## 常量(可选值 true / false)
YII_DEBUG=true
## 常量(可选值 "dev" / "test" / "prod")
YII_ENV="dev"
...
从 .env.example
文件复制而来的 .env
本地环境配置文件默认开启 debug
模式。将 YII_DEBUG
常量设置为 false
来关闭 debug
模式即可。
但人并不是这么容易满足的,关闭 debug
模式是中下的选择,有没有修正这个警告的方法呢?
当然有。根据字面意思就是这个位置的 count
方法传入参数不是一个实现了 Countable
接口的数组或者对象。那么加一个是否实现 Countable
接口的逻辑判断即可:
...
if ($column instanceof \Traversable || ($column instanceof \Countable && count($column) > 1)) {
...
最初的想法是升级 yiisoft/yii2
的版本(修改 composer.json
中的版本号,然后 composer update yiisoft/yii2
单独更新),但直接给我一个错误:Your requirements could not be resolved to an installable set of packages.
,想想还是算了。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »