ecshop gbk2.73版本 在php5.5 上分类不显示如何解决
1个回答
展开全部
程序不断的更新换代,php版本也在不断的推陈出新,自从php7.0推出,php5.5版本已落伍,但是目前使用php5.5的也不少,接下来,整理关于在PHP5.5及高版本上报错的解决方法
如果在高版本的php虚拟主机上安装程序,出现兼容性问题。
小编在本地环境php5.5上安装出现以下两种报错提示:
Only variables should be passed by reference php
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead…?
先说明第一个问题的解决方法:
php 5.3以上版本的问题,和配置有关 只要418行把这一句拆成两句就没有问题了。
将下列:
1
$tag_sel = array_shift(explode(' ', $tag));
修改为:
1
$tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);
因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值
第二个报错解决办法:
找到文件:include/cls_template.php
将以下代码:
1
return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
修改成:
1return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
如果在高版本的php虚拟主机上安装程序,出现兼容性问题。
小编在本地环境php5.5上安装出现以下两种报错提示:
Only variables should be passed by reference php
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead…?
先说明第一个问题的解决方法:
php 5.3以上版本的问题,和配置有关 只要418行把这一句拆成两句就没有问题了。
将下列:
1
$tag_sel = array_shift(explode(' ', $tag));
修改为:
1
$tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);
因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值
第二个报错解决办法:
找到文件:include/cls_template.php
将以下代码:
1
return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
修改成:
1return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询