如果使用5.3以上版本的php按照ecshop很容易遇到如下一些報錯問題:
preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in
這些問題按經驗說可以通過修改php.ini中的error_reporting來屏蔽,例如:
error_reporting =E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
然而令我費解的是,這樣屏蔽根本無效!
我就奇了個怪了,我都強制關閉了php報錯怎麼還會報錯呢?
天殺的,原來ecshop的cls_template.php這個文件強制開啓了error_report,而且強制自定義了報錯級別!
ecshop的源碼真的是古董級別的,最兼容的php版本居然是5.3系,然而如今php7的時代,最低也得使用一下5.6系列的php
解決方案
修改ecshop的/includes/cls_template.php文件:
另外還有對應的手機版/mobile/includes//cls_template.php文件
找到所有的error_reporting全部修改爲
//error_reporting(E_ALL ^ E_NOTICE); //這是原來的坑比代碼
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
再或者簡潔點,直接一個E_ERROR解決問題
error_reporting(E_ERROR);