ECSHOP在PHP5.5及高版本上报错的解决方法

yizhihongxing

下面我将为您详细讲解“ECSHOP在PHP5.5及高版本上报错的解决方法”的完整攻略。

问题描述

在PHP5.5及其高版本中,如果使用ECShop(版本2.x)进行开发或者二次开发,那么可能会出现以下报错信息:

Deprecated: Assigning the return value of new by reference is deprecated in file.php on line xx

或者:

Strict Standards: Non-static method tablename::funcname() should not be called statically in file.php on line xx

这是因为PHP5.5及其高版本对于几个报错级别做了更为严格的限制,而ECShop所使用的代码未能适应这种变动,以至于导致了上述错误的报出。

解决方法

针对这种情况,我们可以采用如下两个方法进行解决:

方法一:修改error_reporting级别

我们可以通过修改error_reporting级别的方式解决这个问题。我们只需要在index.php开头加上以下代码即可:

error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE);

这样就可以屏蔽掉"new"和“非静态方法调用”的报错信息。

方法二:修改代码文件

我们也可以直接修改代码文件中的报错代码来消除报错信息。具体地,我们需要将代码中的"=& new"和"$this->funcname()"修改为"= new"和"self::funcname()",例如:

//修改前
$obj =& new classname();
//修改后
$obj = new classname();
//修改前
$ret = $this->funcname();
//修改后
$ret = self::funcname();

例如,在includes/lib_transaction.php文件中,我们需要将以下代码:

$logistics_code = $obj_delivery->get_code();
$logistics_sn = &$obj_delivery->orderShipping($order);

修改为:

$logistics_code = $obj_delivery->get_code();
$logistics_sn = $obj_delivery->orderShipping($order);

这样,就可以消除相关的报错信息了。

示例说明

示例一:采用方法一解决问题

在index.php文件开头加入以下代码:

error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE);

这样就可以屏蔽掉“new”和“非静态方法调用”的报错信息。

示例二:采用方法二解决问题

我们在/includes/lib_transaction.php文件中发现以下代码:

$logistics_sn = &$obj_delivery->orderShipping($order);

将其修改为:

$logistics_sn = $obj_delivery->orderShipping($order);

就可以消除相关的报错信息了。

以上就是解决“ECSHOP在PHP5.5及高版本上报错的解决方法”的完整攻略。希望对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ECSHOP在PHP5.5及高版本上报错的解决方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Windows Server 2003 下配置 MySQL 集群(Cluster)教程

    Windows Server 2003 下配置 MySQL 集群(Cluster)教程 MySQL是一个广泛使用的关系型数据库管理系统,它可以用于存储和管理各种类型的数据。但当数据库量大时,单个MySQL服务器可能无法满足高并发和容错性等需求。因此,MySQL集群(Cluster)成为一种改善MySQL服务器容错性和并发能力的方法。本文将介绍在Windows…

    database 2023年5月22日
    00
  • sqlserver中Case的使用方法(上下篇)第2/2页

    首先我们需要了解什么是SQL Server的Case语句。Case语句是一种条件语句,通过判断一个或多个条件来决定执行哪一个语句块,类似于if-else结构。Case语句可以有多种不同的形式,其中最常用的形式包括简单Case语句和搜索Case语句。下面我将分别针对这两种形式进行详细讲解。 一、简单CASE语句 简单Case语句用于基于单个条件值执行不同的操作…

    database 2023年5月21日
    00
  • mysql 模糊查询 concat()的用法详解

    MySQL 模糊查询 concat()的用法详解 在 MySQL 中,我们经常需要进行模糊查询操作,而 concat() 函数则是一个常见的字符串连接函数,在模糊查询中也可以发挥重要的作用。本文将带你详细了解 concat() 函数的用法,并提供两条实际的示例,以帮助大家更好地理解 concat() 函数。 concat() 函数的语法 concat() 函…

    database 2023年5月22日
    00
  • 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法

    这是一篇关于“通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法”的攻略,攻略包含以下内容: 问题原因 解决方法 配置允许远程连接的账户和密码 配置服务器的防火墙规则 示例说明 问题原因 当我们在使用Navicat for MySQL远程连接MySQL数据库时,会遇到以下错误: error 1130 (HY000): Ho…

    database 2023年5月18日
    00
  • MySQL教程DML数据操纵语言示例详解

    MySQL教程DML数据操纵语言示例详解 介绍 本文将详细讲解MySQL的DML数据操纵语言,包含INSERT、UPDATE、DELETE等命令的使用方式以及示例说明。 INSERT命令 INSERT命令用于添加新的数据行到表中。下面是一个简单的示例: INSERT INTO customers(name, email, phone) VALUES(‘Joh…

    database 2023年5月21日
    00
  • MySQL索引不会被用到的情况汇总

    对于MySQL索引不会被使用的情况,可以从以下几个方面进行分析。 1. 索引列未在条件中出现 问题描述 如果我们创建了表的索引,但是在查询条件中没有使用索引列,那么优化器是不会选择使用索引的,而是进行全表扫描,这将导致查询效率低下。 解决方案 在查询中使用索引列。如果查询中不能使用索引列,则可以考虑将索引列加入到查询条件中。 以下是一个简单的示例: — 创…

    database 2023年5月22日
    00
  • Oracle基础:程序中调用sqlplus的方式

    【Oracle基础:程序中调用sqlplus的方式攻略】 在Oracle数据库开发中,有时候需要在程序中调用Sqlplus命令行工具,这个过程可以使用Java、Shell等语言实现。下面详细讲解如何在程序中调用Sqlplus命令行工具。 1、使用Java语言实现 Java程序中可以通过ProcessBuilder来调用操作系统命令行工具。下面是Java程序调…

    database 2023年5月21日
    00
  • MySQL 配置主从复制实践分享

    下面我来为您详细讲解 MySQL 配置主从复制实践分享的完整攻略。 什么是 MySQL 主从复制 在 MySQL 中,主从复制是一种将一个 MySQL 数据库(主数据库)的变化同步到另外一个 MySQL 数据库(从数据库)的方法。主数据库将变化记录在二进制日志(binlog)中,从数据库定期连接主数据库获取这些日志,并将其应用到从数据库上。 主从复制可以实现…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部