首页天道酬勤tp5应用php7.2.15出错怎样解决

tp5应用php7.2.15出错怎样解决

admin 05-27 06:00 169次浏览
本文主要介绍了“tp5应用php7.2.15出错怎样解决”,在日常操作过程中,相信不少人在tp5应用php7.2.15出错怎么解决问题中存在困惑,我查看了各式各样材料,整理了简易实用的操作方式,希望可以解释”tp5应用php7.2.15出错怎样解决”的困惑有一定的帮助!下面,请跟随小编一起来学习吧!

一、难题背景

使用 TP5 架构时,很多客户都已更新了 PHP 版本。在其中,PHP 7.2.15 版本号被称之为很稳定的一个版本号,并可以提供良好的特性可靠性和。但是,当一些客户在 TP5 上尝试用 PHP 7.2.15 版本情况下,却遭遇到了出错的现象。

具体出错信息内容如下所示:

PHP Fatal error: Cannot use isset() on the result of a function call (you can use "null !== func()" instead) in /path/to/tp5/framework/library/think/db/BaseQuery.php on line xxx

二、难题的主要原因

依据上述出错信息内容,能够发现的问题存在于 TP5 框架的编码中。从总体上,要在 TP5 数据库查询语句构造器 BaseQuery.php 中存在出错。从出错信息内容中可以看到,要在 BaseQuery.php 文档中采用了 isset() 函数公式,然而这有可能会开启 PHP 7.2.15 版本某类新特性造成不正确的产生。

具体而言,PHP 7.2.15 版本号引进了一个新特性,且不可在函数的返回值上直接用 isset() 函数公式。这一特性的完成是为了防止一些潜在性安全问题和拼写错误。但在 TP5 中,出现了这些在传参中使用 isset() 的现象,从而导致了流程的奔溃。

三、解决方法

对于以上问题,采用下列解决方法能够解决这些问题:

  1. 更新 TP5 版本号

依据 TP5 官方网提供的资料,假如 Upgrade 本次更新过程中遇到这些问题,可以先从 5.0.10 升级成最新版。TP5 的最新版早已对于这个问题展开了修补,能够支持 PHP 7.2.15 的应用。

  1. 手动式修改代码

此外,你就可以手动式修改代码来解决问题。实际的修改方式如下所示:

进到文档:tp5/framework/library/think/db/BaseQuery.php

寻找下列编码:

if(is_null($value)) {
    $condition .= $field . ' IS NULL '; // null值解决
} elseif(is_array($value)) {
    if(is_string($key)) {
        $condition .= $field . ' ' . $key . ' (' . implode(',', $this->parseValue($value)) . ')';
    } else {
        $condition .= $this->buildWhere($value, $field, $type, $logic, $condition);
    }
} elseif(is_string($key)) {
    $condition .= $field . ' ' . $key . ' ' . $this->parseValue($value);
} else {
    $condition .= $field . ' = ' . $this->parseValue($value);
}

调整为:

if(is_null($value)) {
    $condition .= $field . ' IS NULL ';
} elseif(is_array($value)) {
    if(is_string($key)) {
        if (empty($value)) {
            $condition .= '1=0';
        } else {
            $condition .= $field . ' ' . $key . ' (' . implode(',', $this->parseValue($value)) . ')';
        }
    } else {
        $condition .= $this->buildWhere($value, $field, $type, $logic, $condition);
    }
} elseif(is_string($key)) {
    if ($value === '' || is_array($value)) {
        $condition .= '1=0';
    } else {
        $condition .= $field . ' ' . $key . ' ' . $this->parseValue($value);
    }
} else {
    $condition .= $field . ' = ' . $this->parseValue($value);
}

留意,你可以选择手动式修改代码,必须对修订后的编码进行检测来保证其准确性。与此同时,为了防止之后问题,最好是维持 TP5 架构版本号最新发布的情况。

到这里,有关“tp5应用php7.2.15出错怎样解决”课程的学习就没有了,期待可以解决小伙伴们的困惑。理论和实际搭配能更好地协助学习借鉴,快点看一下吧!若要再次了解更多的基本知识,请继续关注花开半夏网址,小编将再接再厉为大家带来了大量好用的文章内容!

tp5应用php7.2.15出错怎样解决
docker怎样在mac-m1处理芯片布署并开启tomcat 如何制作app软件(app制作软件手机版)
相关内容