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() 的现象,从而导致了流程的奔溃。
三、解决方法
对于以上问题,采用下列解决方法能够解决这些问题:
更新 TP5 版本号
依据 TP5 官方网提供的资料,假如 Upgrade 本次更新过程中遇到这些问题,可以先从 5.0.10 升级成最新版。TP5 的最新版早已对于这个问题展开了修补,能够支持 PHP 7.2.15 的应用。
手动式修改代码
此外,你就可以手动式修改代码来解决问题。实际的修改方式如下所示:
进到文档: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出错怎样解决”课程的学习就没有了,期待可以解决小伙伴们的困惑。理论和实际搭配能更好地协助学习借鉴,快点看一下吧!若要再次了解更多的基本知识,请继续关注花开半夏网址,小编将再接再厉为大家带来了大量好用的文章内容!