狂雨1.32+PHP7.4+mySQL5.7下点击书库时出现Trying to access array offset on value of type bool错误解决方法

单纯自己做个memo,有相同情况的可以借鉴看看

狂雨1.32版本,PHP7.4,mySQL5.7运行环境,因为框架是thinkphp5.1,所以在PHP5.6下运行是一切正常的,但是在PHP7.4环境下,会出现各种奇奇怪怪的错误。

点击书库出现Trying to access array offset on value of type bool错误

查看application\common\model\Api.php文件

	public function get_tpl($id,$tpl_type){
		$tpl=$this->get_category($id);
		if($tpl[$tpl_type]){
			return $tpl[$tpl_type];
		}
		if($tpl['pid']==0){
			$this->error='模板未设置!';
		}else{
			return $this->get_tpl($tpl['pid'],$tpl_type);
		}
	}

修改if($tpl[$tpl_type]){ 部分

public function get_tpl($id, $tpl_type) {
    $tpl = $this->get_category($id);
    if (!is_array($tpl)) {
        $this->error = '返回的数据结构不正确!';
        return null;
    }
    if (array_key_exists($tpl_type, $tpl)) {
        return $tpl[$tpl_type];
    }
    if ($tpl['pid'] == 0) {
        $this->error = '模板未设置!';
    } else {
        return $this->get_tpl($tpl['pid'], $tpl_type);
    }
}

查看application\home\controller\Lists.php文件

	public function lists(){
		Cookie::set('__forward__',$this->request->url());
		$cid=$this->request->param('id');
		$size=$this->request->param('size');
		$serialize=$this->request->param('serialize');
		$update=$this->request->param('update');
		$tag=$this->request->param('tag');
		$info=model("common/api")->get_category($cid);
		$this->view->list_title=empty($info["meta_title"]) ? config("web.meta_title") : $info["meta_title"];
		$this->view->list_keywords=empty($info["meta_keywords"]) ? config("web.meta_keyword") : $info["meta_keywords"];
		$this->view->list_description=empty($info["meta_description"]) ? config("web.meta_description") : $info["meta_description"];
		$tpl=model('common/api')->get_tpl($cid,'template_filter');
		if(!$tpl){
			$tpl='lists.html';
		}
		$this->assign(['cid'=>$info['id'],'pid'=>$info['pid'],'title'=>$info['title'],'icon'=>$info['icon'],'size'=>$size,'serialize'=>$serialize,'update'=>$update,'tag'=>$tag,'pos'=>1]);
		return $this->fetch($this->home_tplpath.$tpl);
	}

修改

$this->assign([‘cid’=>$info[‘id’],’pid’=>$info[‘pid’],’title’=>$info[‘title’],’icon’=>$info[‘icon’],’size’=>$size,’serialize’=>$serialize,’update’=>$update,’tag’=>$tag,’pos’=>1]);部分

public function lists(){
    Cookie::set('__forward__',$this->request->url());
    $cid = $this->request->param('id');
    $size = $this->request->param('size');
    $serialize = $this->request->param('serialize');
    $update = $this->request->param('update');
    $tag = $this->request->param('tag');
    
    $info = model("common/api")->get_category($cid);
    if (!is_array($info)) {
        $info = [];
    }
    $this->view->list_title = empty($info["meta_title"]) ? config("web.meta_title") : $info["meta_title"];
    $this->view->list_keywords = empty($info["meta_keywords"]) ? config("web.meta_keyword") : $info["meta_keywords"];
    $this->view->list_description = empty($info["meta_description"]) ? config("web.meta_description") : $info["meta_description"];
    $tpl = model('common/api')->get_tpl($cid, 'template_filter');
    if (!$tpl) {
        $tpl = 'lists.html';
    }
    $assignData = [
        'cid' => isset($info['id']) ? $info['id'] : null,
        'pid' => isset($info['pid']) ? $info['pid'] : null,
        'title' => isset($info['title']) ? $info['title'] : null,
        'icon' => isset($info['icon']) ? $info['icon'] : null,
        'size' => $size,
        'serialize' => $serialize,
        'update' => $update,
        'tag' => $tag,
        'pos' => 1
    ];
    $this->assign($assignData);
    return $this->fetch($this->home_tplpath . $tpl);
}

修改以上两个文件后,Trying to access array offset on value of type bool错误暂时是解决了,相同运行环境的可以作为借鉴参考