国庆前夕想着测试点功能,在上传js文件的时候,水印插件报错提示:Trying to access array offset on value of type bool,其他插件也类似这个文件,关于水印插件其实还有问题,因为这个插件最初的鸟哥写的,后期因为鸟哥不在zb了,所有我把这个插件从猪那要来了,当时是因为修改一个BUG,修改之后上架了,期间不少人找我,因为在使用的时候无效,无法选择水印模式,这个问题今天也顺便解决了,咳咳,聊正题哈,为什么会提示这个呢?
问题只存在PHP7 版本以上才会有,之前在 PHP 7.3中是正常运行的。由此分析得出,PHP 语言本身对于语法的规范性要求得更为严谨了的。是在php7版本中,7.4 版本的向后不兼容更改,非数组的数组样式访问,现在,尝试将 null,bool,int,float 或 resource 类型的值用作数组 ( 例如 $null[“key”] ) 会产生一个通知。
解决办法就是需要将“$tmp_info[2]”做一个判断,然后执行函数,修改之后的代码为:
代码语言:javascript复制if(isset($tmp_info[2])){
if($tmp_info[2]>1 and $tmp_info[2]<4) {
Watermark_Do($tmp,$waterPos,$waterImage,$waterText,$textFont,$textColor,$watertype);
}
}
修改之前记得备份,修改完成后保存代码,前台上传文章测试一切正常,未再报错,问题已解决但是仅仅针对水印插件,其他代码请自行排查,水印插件的问题已经修复了,如遇到了类似的问题请更新插件,如果是其他程序也提示报错那么请百度吧,我也搞不懂的。毕竟都了解我只是代码的搬运工,不是生产者!!!