echshop---includescls_template.php on line 418錯誤,解決方法,使用php5.3或者5.2版本,因為5.2版本存在跨站攻擊漏洞,建議使用php5.3版本
今天在測試 ecshop 系統(tǒng)時,又遇到了因版本而出現(xiàn)的問題,具體的問題代碼如下所示:
Strict Standards: Only variables should be passed by reference in uploadincludescls_template.php on line 418
ecshop 看來也該升級了,出現(xiàn)的諸多問題都是不兼容 php 專業(yè) 版本所引起了,夏日博客分析了上面的代碼,應(yīng)該也和配置有關(guān),我們看一下cls_template.php 的 418 行代碼如下:
$tag_sel = array_shift(explode(' ', $tag));
我們把這一行代碼修改拆分一下,如下所示:
$tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);
因為 array_shift 的參數(shù)是引用傳遞的,5.3 版本以上的只能傳遞具體的變量,而不能通過函數(shù)返回值,所以就出現(xiàn)了上面的代碼,修改后之后,問題解決。
另外一種方法,如果 ecshop 出現(xiàn)的錯誤兼容代碼太多的話,可以直接進行屏蔽錯誤配置,在 PHP 配置文件 php.ini 中配置如下:
error_reporting = E_ALL | E_STRICT
如果沒有配置 PHP.INI 的權(quán)限,也可以在 PHP 文件中直接寫屏蔽語句,代碼如下:
error_reporting(0);
這種方法只是把錯誤給屏蔽掉了,但實質(zhì)錯誤還在,當(dāng)我們覺得錯誤并不影響程序的正常運行時,就可以使用這種方法。
