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 相关文章推荐
php 全局变量范围分析
Aug 07 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
PHP如何实现跨域
May 30 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
基于php实现的验证码小程序
Dec 13 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
php双向队列实例讲解
Nov 17 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
浅析PHP绘图技术
2013/07/03 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
Yii框架登录流程分析
2014/12/03 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
PHP 中常量的知识整理
2017/04/14 PHP
php集成开发环境详解
2019/09/24 PHP
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
市场部管理制度
2014/02/02 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
节水宣传标语口号
2015/12/26 职场文书
800字作文之大雪
2019/12/04 职场文书
手残删除python之后的补救方法
2021/06/26 Python
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python
Python  lambda匿名函数和三元运算符
2022/04/19 Python