隨著PHP5.5 的普及(ji),ECSHOP系統又爆出了(le)新(xin)的錯(cuo)誤。PHP發(fa)展到(dao)PHP5.5版本(ben)以后,有了(le)很多(duo)細微的變(bian)化。而ECSHOP官方更(geng)新(xin)又太慢,發(fa)現這(zhe)些問(wen)題后也不及(ji)時升級,導致(zhi)用戶安裝使用過程中(zhong)錯(cuo)誤百(bai)出。說了(le)半天,這(zhe)個新(xin)錯(cuo)誤到(dao)底(di)是什么呢,它的完整錯(cuo)誤提(ti)示信息是這(zhe)樣的:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in.......
注(zhu)意:不(bu)是(shi)所(suo)有(you)人的ECSHOP都會報(bao)(bao)這個錯(cuo)誤,只有(you)使(shi)用(yong)PHP5.5環境(jing)的ECSHOP才會報(bao)(bao)這個錯(cuo)誤。
下面街盟科技(ji)技(ji)術(shu)小(xiao)組先來說一下(xia)錯(cuo)誤產生的原因(yin):

1)、錯誤原因:
preg_replace() 函數中用(yong)到的(de)修飾符(fu) /e 在 PHP5.5.x 中已經(jing)被棄用(yong)了(le)。
如(ru)果(guo)你(ni)的(de)PHP版本恰(qia)好是(shi)PHP5.5.X,那你(ni)的(de)ECSHOP肯定就會(hui)報(bao)類似下(xia)面這樣的(de)錯誤:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in......

2)、解決(jue)辦法:
其實從剛(gang)才的錯誤提示信息中我們也(ye)能(neng)看出一二,它提示我們使(shi)用 preg_replace_callback 來(lai)代替 preg_replace。
所(suo)以解決(jue)方法如下:

使用記事本或(huo)其他PHP編輯軟件(如:editplus)打開文件 includes/cls_template.php ,找(zhao)到

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

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

 

問題解決。

3)、如果你的ECSHOP中(zhong)其他文件也(ye)報類似的 preg_replace錯誤,請參(can)照上(shang)面(mian)方法(fa)解決之,解決思(si)路和解決方法(fa)是一樣的。