PHP 5.6.6 上运行 ecshop 2.7.3 常见问题整合

在安装完php在自己的服务器上以后, 发现在静态网页上出现了很多 error。

在网上查找过后发现,大部分问题是因为 PHP发展到PHP5.5版本以后,有了很多细微的变化。而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百出。

在这里我整理一下我遇到的问题希望对你们能有些帮组也为了自己以后查看。

问题1:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in cls_template.php XXX line

出错原因:

   出现以上问题是 preg_replace() 函数中用到的修饰符 /e 在 PHP5.5.x 中已经被弃用了。在PHP 5.5以上的版本用 preg_replace_callback 函数替换了 preg_replace函数。

解决方法:

 解决问题的方法就是将代码中使用 preg_replace 函数的部分全部替换成 preg_replace_callback 函数,并且将一被废弃的 /e 修饰符 删除。

例子: 

   return preg_replace("/{([^\}\{\n]*)}/e", "\$this->sel ect(‘\\1‘);", $source);

替换为

return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->sel ect($r[1]); }, $source);

参考文献:

http://www.68ecshop.com/article-1193.html

preg_replace 函数介绍 http://php.net/manual/zh/function.preg-replace.php

preg_replace_callback 函数介绍 http://php.net/manual/zh/function.preg-replace-callback.php

问题2:

Strict Standards: Only variables should be passed by reference in ......\includes\cls_template.php on line 418

出错原因:

出现这个问题的原因,貌似在php5.4中array_shift只能为变量,不能是函数返回值。

解决方法:

$tag_sel = array_shift(explode(‘ ‘, $tag));

替换成

$tag_arr = explode(‘ ‘, $tag);
   $tag_sel = array_shift($tag_arr);

问题3: 

Strict Standards: Non-static method cls_image::gd_version() should not be called statically in ......\includes\lib_base.php on line 346   或者

Strict Standards: Non-static method cls_image::gd_version() should not be called statically in ......\includes\lib_installer.php on line 31

出错原因:

如问题中提示的一样,因为 cls_image.php 中 gd_version() 不是 static 函数所以在lib_base.php 与 lib_installer.php 中调用时才会出现以上问题。

解决方法:

  解决方法1:    首先在 lib_image.php 文件中,用 Shift+F 去搜索 gd_version 函数。然后在gd_version 方法前加 static 修饰符,是此函数变成静态函数。

解决方法2:    在lib_base.php 与 lib_installer.php 函数中找到 cls_image::gd_version() 部分, 然后分别创建cls_image 实例,之后用创建的实例再去调用 gd_version() 函数。

$cls_gile = new cls_image();

return $cls_gile->gd_version();

参考文献:

http://www.ecshop120.com/ecshop-ercikaifa/article-275.html

问题4:

Deprecated: Assigning the return value of new by reference is deprecated in…

出错原因:

PHP5.3+废除了”=&”符号,对象复制用”=”

解决方法:

搜索所有PHP文件,将”=&”替换为”=”

参考文献:

http://www.phpally.com/ecshop%E6%8A%A5%E9%94%99deprecated-assigning-the-return-value-of-%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/comment-page-1/

问题5:

Strict Standards: mktime(): You should be using the time() function instead in ......\admin\shop_config.php on line 32

出错原因:

这个错误提示的意思:mktime()方法不带参数被调用时,会被抛出一个报错提示。

解决方法:

$auth = mktime();

将mktime()替换成time()方法,代码为:

$auth = time();

参考文献:

http://www.weste.net/2014/6-18/97356.html

问题6:

   Strict Standards: Redefining already defined constructor for class cls_sql_dump ......

出错原因:

原因跟PHP类中的构造函数有关,PHP早期版本是使用跟类同名的函数作为构造函数,后来又出现了使用 __construct()作为构造函数,

这俩个函数可以同时存在。到了PHP5.4版本,对这俩个函数在代码中的先后顺序有了严格的要求。在PHP5.4版本下,必须__construct() 在前,

同名函数在后,否则就会出现上面的的错误提示。

解决方法:

把__construct()函数放在,同名函数上面就行了。

参考文献:

http://www.ecshop120.com/ecshop-ercikaifa/article-253.html

问题7:

Strict Standards: Declaration of vbb::set_cookie() should be compatible with integrate::set_cookie($username = ‘‘, $remember = NULL)

出错问题:

vbb继承了integrate类并且重写了 set_cookie() 函数,但vbb重写set_cookie函数的参数 与 其父类set_cookie 的参数不符所以出现以上问题。

解决方法:

function set_cookie ($username="")
   改为
   function set_cookie ($username="", $remember = NULL)

如出现类似错误,可以以同样的方法解决。

参考文献:

http://blog.sina.com.cn/s/blog_6f145be10102v2px.html

时间: 2024-08-10 19:17:22

PHP 5.6.6 上运行 ecshop 2.7.3 常见问题整合的相关文章

PHP5.6.6上运行 ecshop 2.7.3常见问题处理

ecshop在在PHP5.6.6版本以后,有了很多细微的变化.而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百出. 整理一下我遇到的问题希望对你们能有些帮组也为了自己以后查看. 问题1: Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in cls_template.php XXX line 出错原因: 出现以上问题是 p

Android系统搭建PHP+MySql环境,支持SqlLite,完美运行ecshop、phpcms、Discuz_X3等开源程序

我从事Web开发有1年多的时间,在这段时间里一直研究新技术.从今以后将安家于此,与众多Web开发爱好者交流与学习.今后我将不断终结过年1年学习的知识和未来接触与学习的技能,分享自己对Web开发的独特见解,本博文中有任何问题,都可以直接联系我或者留言,让我们一起为未来共勉! 又快要过年了,今天预备回家,但是现在手头只有一台台式机(因为本人不太爱用笔记本,之前的放久了受潮坏了),回家带着不方便,但是回去的时候不学习就是不对的,从事Web开发就是一个不停学习的过程. 于是前天突发奇想Android系统

让Qt在MIPS Linux上运行 good

下载 首先下载Qt everywhere,当前的版本是4.7.2,可以从nokia的网站上下载,也可以从git服务器上下载.考虑到文件有200M 以上的大小,下载速率低于25kBPS的,需要考虑从什么地方复制一份,否则需要等待较长时间才能下载下来.我是在家里下载这个文件的,所以开始编译已经是第二天了.考虑提升员工效率的话,需要预先预备好这些下载文件,或者增加接入带宽. 解压 第一步下载的文件是一个tar包,所以需要解压,通常解压需要在unix/Linux环境下进行,如果只是看代码,windows

【转】利用xcode生成的app生成可以在iphone和itouch上运行的ipa安装包

转载地址:http://blog.csdn.net/yohunl/article/details/5971252 在编译好的真机版目录下的.app文件,至于生成真机可以运行的app的方法,有两种方式,一种是交99美元获得一个证书,另外一种是破解的方式,在此不再详述,本文假设你已经生成了真机上可以运行的app包了(app包实际上是一个文件夹) 假设此安装包的名称是 hello.app,点击右键,选择 显示包内容,这样就可以打开这个hello.app文件夹了,在此文件夹中有一个info.plist文

HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了

2007 年 W3C (万维网联盟)立项 HTML5,直至 2014 年 10 月底,这个长达八年的规范终于正式封稿. 过去这些年,HTML5 颠覆了 PC 互联网的格局,优化了移动互联网的体验,接下来,HTML5 将颠覆原生 App 世界.这听起来有点危言耸听,但若认真分析 HTML5 的发展史,你会发现,这个世界的发展趋势确实就是这样. 熟知历史才能预知未来,先让我们来看看 HTML5 为什么诞生.这 8 年是怎么过来的. 一. HTML5 的诞生 自 W3C 于 1999 年发布 HTML

使用 Bluemix? Live Sync 快速更新 Bluemix 上运行的应用程序实例

如果您要构建 Node.js 应用程序,那么可以使用 IBM® Bluemix® Live Sync 快速更新 Bluemix 上的应用程序实例,并像在桌面上进行操作一样进行开发,而无需重新部署.执行更改后,您可以立即在运行中的 Bluemix 应用程序中看到该更改.Bluemix Live Sync 可从命令行以及在 Web IDE 中运行.您可以使用 Bluemix Live Sync 来调试以 Node.js 编写的应用程序. Bluemix Live Sync 由三个功能部件组成 桌面同

在Hadoop上运行基于RMM中文分词算法的MapReduce程序

原文:http://xiaoxia.org/2011/12/18/map-reduce-program-of-rmm-word-count-on-hadoop/ 在Hadoop上运行基于RMM中文分词算法的MapReduce程序 23条回复 我知道这个文章标题很“学术”化,很俗,让人看起来是一篇很牛B或者很装逼的论文!其实不然,只是一份普通的实验报告,同时本文也不对RMM中文分词算法进行研究.这个实验报告是我做高性能计算课程的实验里提交的.所以,下面的内容是从我的实验报告里摘录出来的,当作是我学

深度学习之在iOS上运行CNN

1 引言 作为曾经的iOS开发者,在研究深度学习的时候,总有一个想法就是在iPhone上运行深度学习,不管是在手机上训练还是利用训练好的数据进行测试. 因为iOS的开发环境支持C++,因此,只要你的代码是C/C++,本质上就可以在iOS上运行. 怎么才能更快更好地在iOS上运行CNN呢? 2 方法1:通过Matlab转码 Matlab自带转成c的工具,如果你研究过UFLDL的深度学习教程,就知道如何在Matlab上使用CNN,那么,转换成c后,放到iOS的开发环境中,然后将参数存成txt格式再读

在Intel® Galileo Gen 2开发板上运行Debian操作系统

    最近在研究Intel® Galileo Gen 2开发板的Linux开发.Intel® Galileo Gen 2开发板自带的Linux比较简单,缺少很多常用的软件,而且板子自身的容量很小.所以我打算在SD卡上运行Debian系统,这个系统里装有apt-get,缺少什么软件可以通过网络安装. 1. 下载Galileo的debian镜像.    到http://sourceforge.net/projects/galileodebian/下载Galileo的debian软件镜像galile