ECSHOP在PHP5.5及高版本上报错的解决方法
Ecshop却没来得及修改,如果在高版本的php虚拟主机上安装ecshop程序,出现兼容性问题。
小编在本地环境php5.5上安装出现以下两种报错提示:
Onlyvariablesshouldbepassedbyreferencephp
Deprecated:preg_replace():The/emodifierisdeprecated,usepreg_replace_callbackinstead…?
通过在网络上查找,小编发现并不是只能在低版本的php中安装,也是找到了解决办法,方便大家在php5.5版本上调试程序。小编就在这里把解决方法分享给大家:
先说明第一个问题的解决方法:
php5.3以上版本的问题,和配置有关只要418行把这一句拆成两句就没有问题了。
将下列:
$tag_sel=array_shift(explode('',$tag));
修改为:
$tag_arr=explode('',$tag);$tag_sel=array_shift($tag_arr);
因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值
第二个报错解决办法:
找到文件:include/cls_template.php
将以下代码:
returnpreg_replace("/{([^\}\{\n]*)}/e","\$this->select('\\1');",$source);
修改成:
returnpreg_replace_callback("/{([^\}\{\n]*)}/",function($r){return$this->select($r[1]);},$source);
小编目前只遇到这样两个报错,如果在程序调试和开发过程中遇到其他的问题,如果能够解决,小编也是会整理出解决方法的。
ecshop在高版本PHP下报错的解决方法
1.ecshop提示StrictStandards:Non-staticmethodcls_image
::gd_version()shouldnotbecalledstaticallyinE:/wwwroot/weirenchou/includes/lib_base.phponline346
找到346行吧
returncls_image::gd_version()
替换成:
$p=newcls_image();return$p->gd_version();
2.ecshop的时候出现如下错误:
Deprecated:preg_replace():The/emodifierisdeprecated,usepreg_replace_callbackinsteadin/ecshop/includes/cls_template.phponline300
打开ecshop的目录找到includes/cls_template.php到第300行
把
returnpreg_replace("/{([^/}/{/n]*)}/e","/$this->select('//1');",$source);
替换成
returnpreg_replace_callback("/{([^/}/{/n]*)}/",function($r){return$this->select($r[1]);},$source);
3.StrictStandards:OnlyvariablesshouldbepassedbyreferenceinE:/web/shopex/includes/cls_template.phponline422
$tag_sel=array_shift(explode('',$tag));
改成:
$tag_arr=explode('',$tag);$tag_sel=array_shift($tag_arr);
4.会员整合出现
phpbb::set_cookie()shouldbecompatiblewithintegrate /includes/modules/integrates/phpbb.phponline232 110行 functionset_cookie($username="")
修改成
functionset_cookie($username="",$remember=NULL) includes/modules/integrates/phpwind6.php
ucenter.php vbb.php也是这样修改
ucenter.php210行修改成
functionadd_user($username,$password,$email,$gender=-1,$bday=0,$reg_date=0,$md5password='')
127行修改成
functionlogin($username,$password,$remember=NULL)
5.数据库备份出现
edefiningalreadydefinedconstructorforclasscls_sql_dump /admin/includes/cls_sql_dump.phponline function__construct(&$db,$max_size=) { $this->cls_sql_dump($db,$max_size); }
移到functioncls_sql_dump(&$db,$max_size=0)前面
Non-staticmethodcls_sql_dump::get_random_name()admin/database.phponline64
打开includes/cls_sql_dump.php
479行
functionget_random_name()
修改成
staticfunctionget_random_name()