ecshop gbk2.73版本 在php5.5 上分类不显示如何解决

2025-05-15 23:27:44
推荐回答(1个)
回答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);