ECshop 迁移到 PHP7版本时遇到的兼容性问题


Posted in PHP onFebruary 15, 2016

在 PHP7 上安装 ECShop V2.7.3时,报错!

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; ECS has a deprecated constructor in /usr/local/nginx/html/ecshop/upload/includes/cls_ecshop.php on line 25

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

这个报错的原因是 PHP7 不再支持与类名相同的构造方法,构造方法统一使用 __construct(), 比如下面的写法 PHP7 就会报这个错误。

<?php 
class foo { 
function foo() {
echo 'I am the constructor';
}
}
?>

回到 ecshop 我们看一下 cls_ecshop.php 文件的25行。如下

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

果然有与类名相同的构造方法,我们将构造方法 ECS 修改为 __construct,

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

回到 ecshop 的安装首页刷新,发现已经没有错误了。

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

单击下一步,报错

Deprecated: Non-static method cls_image::gd_version() should not be called statically in /usr/local/nginx/html/ecshop/upload/install/includes/lib_installer.php on line 31

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

这个报错的原因是静态调用非静态方法,比如下面的代码就会报这个错误

<?php 
class foo { 
function bar() {
echo 'I am not static!';
}
}
foo::bar(); 
?>

修改方法也很简单,要么将该方法改为静态方法,要么将该调用改为非静态调用。 我们看一下报错的文件 lib_installer.php 的 31行代码

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

还有cls image类文件的 gd version() 方法,可以看到的确没有使用 static关键字

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

第一种修改方式,将该方法修改为静态方法,在方法前加关键字 public static

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

第二种修改方式,采用非静态方式的调用,修改lib_installer.php 的 31行代码

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

这两种方法都可以解决问题。 回到ecshop的安装步骤第二页,错误提示已经不见了。

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

再下一步悲剧了,PHP7 不支持原始的 mysql api 了,PHP7 支持更好的 Mysqli API 和 pdo_mysql api 所以 ecshop 不改掉操作 mysql 的 api 是无法在 PHP7 上运行起来了。

ECshop 迁移到 PHP7版本时遇到的兼容性问题 

OneAPM for PHP 能够深入到所有 PHP 应用内部完成应用性能管理 能够深入到所有 PHP 应用内部完成应用性能管理和监控,包括代码级别性能问题的可见性、性能瓶颈的快速识别与追溯、真实用户体验监控、服务器监控和端到端的应用性能管理。

以上所述给大家分享了ECshop 迁移到 PHP7版本时遇到的兼容性问题,希望对大家有所帮助。

PHP 相关文章推荐
一个简单的自动发送邮件系统(一)
Oct 09 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
初识php MVC
Sep 10 PHP
php防止sql注入之过滤分页参数实例
Nov 03 PHP
php实现多城市切换特效
Aug 09 PHP
php compact 通过变量创建数组
Nov 15 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 #PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 #PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 #PHP
php socket通信(tcp/udp)实例分析
Feb 14 #PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 #PHP
php中的常用魔术方法汇总
Feb 14 #PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 #PHP
You might like
杏林同学录(九)
2006/10/09 PHP
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python中datetime模块参考手册
2017/01/13 Python
Python科学画图代码分享
2017/11/29 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
python画环形图的方法
2020/03/25 Python
python实现最短路径的实例方法
2020/07/19 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
后勤工作职责
2013/12/22 职场文书
家长会标语
2014/06/24 职场文书
学校工作推荐信范文
2014/07/11 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技