Heim > php教程 > php手册 > ECSHOP在PHP5.5及高版本上报错的解决方法,ecshopphp5.5

ECSHOP在PHP5.5及高版本上报错的解决方法,ecshopphp5.5

WBOY
Freigeben: 2016-06-13 08:55:10
Original
1071 Leute haben es durchsucht

ECSHOP在PHP5.5及高版本上报错的解决方法,ecshopphp5.5

Ecshop却没来得及修改,如果在高版本的php虚拟主机上安装ecshop程序,出现兼容性问题。

小编在本地环境php5.5上安装出现以下两种报错提示

Only variables should be passed by reference php
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead…?

通过在网络上查找,小编发现并不是只能在低版本的php中安装,也是找到了解决办法,方便大家在php5.5版本上调试程序。小编就在这里把解决方法分享给大家:

先说明第一个问题的解决方法:

php 5.3以上版本的问题,和配置有关 只要418行把这一句拆成两句就没有问题了。

将下列:

$tag_sel = array_shift(explode(' ', $tag));
Nach dem Login kopieren
Nach dem Login kopieren

修改为:

$tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);
Nach dem Login kopieren
Nach dem Login kopieren

因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值

第二个报错解决办法:

找到文件:include/cls_template.php

将以下代码:

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
Nach dem Login kopieren

修改成:

return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
Nach dem Login kopieren

小编目前只遇到这样两个报错,如果在程序调试和开发过程中遇到其他的问题,如果能够解决,小编也是会整理出解决方法的。

ecshop 在高版本PHP下报错的解决方法

1 .ecshop提示Strict Standards: Non-static method cls_image

::gd_version() should not be called statically inE:/wwwroot/weirenchou/includes/lib_base.php on line 346
Nach dem Login kopieren

找到346行吧

return cls_image::gd_version()
Nach dem Login kopieren

替换成:

$p = new cls_image();return $p->gd_version();
Nach dem Login kopieren

2 .ecshop的时候出现如下错误:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /ecshop/includes/cls_template.php on line 300
Nach dem Login kopieren

打开ecshop的目录找到includes/cls_template.php 到第300行

return preg_replace("/{([^/}/{/n]*)}/e", "/$this->select('//1');", $source);
Nach dem Login kopieren

替换成

return preg_replace_callback("/{([^/}/{/n]*)}/", function($r) { return $this->select($r[1]); }, $source);
Nach dem Login kopieren

3. Strict Standards: Only variables should be passed by reference in E:/web/shopex/includes/cls_template.php on line 422

$tag_sel = array_shift(explode(' ', $tag));
Nach dem Login kopieren
Nach dem Login kopieren

改成:

$tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);
Nach dem Login kopieren
Nach dem Login kopieren

4 .会员整合出现

phpbb::set_cookie() should be compatible with integrate

/includes/modules/integrates/phpbb.php on line 232

110行

function set_cookie ($username="")
Nach dem Login kopieren

修改成

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

includes/modules/integrates/phpwind6.php
Nach dem Login kopieren

ucenter.php vbb.php也是这样修改

ucenter.php 210行修改成

 function add_user($username, $password, $email, $gender = -1, $bday = 0, $reg_date = 0, $md5password = '')
Nach dem Login kopieren

127行修改成

function login($username, $password, $remember = NULL)
Nach dem Login kopieren

5. 数据库备份出现

edefining already defined constructor for class cls_sql_dump

/admin/includes/cls_sql_dump.php on line 

 function __construct(&$db, $max_size =)

  {

    $this->cls_sql_dump($db, $max_size);

  }
Nach dem Login kopieren

移到function cls_sql_dump(&$db, $max_size=0)前面

Non-static method cls_sql_dump::get_random_name() admin/database.php on line 64
Nach dem Login kopieren

打开includes/cls_sql_dump.php

479行

function get_random_name()
Nach dem Login kopieren

修改成

static function get_random_name()
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage