ECSHOP常见错误处理

ECSHOP常见错误处理

很多朋友在线上安装ECSHOP或者其他有一定历史的开源软件时可能会出现一些平时本地开发所遇见不到的问题,本篇文章收集了归类了常见的ECSHOP与服务器环境的错误现象及处理办法。

国内优秀的开源网店ECSHOP发展至今也有多个年头, 其中经历了PHP多个版本的变化,不可避免会有一些遗漏,日后我将陆续将冲突及解决办法递增更新到此篇文章中。

ECSHOP 错误之 PHP Strict Standards: Redefining already defined constructor for class

这个错误的主要原因是因为空间环境是PHP5.3以上,也就是说PHP5.3以下的版本是不会出现该提示的。PHP早期版本的构造函数是使用和类名同名的的函数,到了PHP5.4出现了使用__construct()作为标准的PHP类的构造函数,同名和函数和__construct()可以同时存在,但是在PHP5.4中__construct()函数必须在与类同名的函数之前

解决办法。根据提示的错误信息,将__contruct()函数放在同名的类构造函数之前即可。

例如:ECSHOP所在目录\includes\cls_captcha.php中将__construct()函数放到同名类构造函数captcha()函数之前即可
如下图所示

 

如何解决ECSHOP错误Redefining already defined constructor for class

解决ECSHOP与PHP5.4错误

ECSHOP 错误之  Non-static method cls_image::gd_version() should not be called statically in XXX\includes\lib_base.php on line346

函数gd_version位于includes\cls_image.php文件中,此函数作用是获取当前服务器环境的GD库的版本,我们查看该函数定义发现并不是静态函数(static method)不能直接调用,

如何解决Non-static method错误

如何解决Non-static method错误

解决办法。我们只需要在报错的地方,实例化一个类的对象,然后使用类的对象来调用即可。

如下图所示:

实例化对象cls_image::gd_version()

实例化对象cls_image::gd_version()

ECSHOP 错误之 PHP Strict Standards: Only variables should be passed by reference in XXX\includes\cls_template.php on line 406

同样这个原因也是由于PHP5.3以上的版本问题。PHP5.3以上的版本默认只能传递变量而不能通过下面这样的临时变量的传递方式来传递

解决办法。我们只需要在报错的地方,使用一个临时变量来保存explode(‘ ‘, $tag),然后传递给函数array_left()即可;代码如下所示:

以后若发现更多错误,我会及时更新到这篇博客里,方便自己的同时也方便更多朋友们。