Discuz!教程之Discuz!X2.5版本安裝一些外掛顯示500錯誤,或頁面打不開的問題修復
阿新 • • 發佈:2019-02-04
儘管目前discuz已經升級到X3.4版本了,但是X2.5版本還有很多站長在使用。目前使用X2.5版本的站長面臨的一個很頭疼的問題就是好多外掛不支援了,或者安裝外掛直接顯示500錯誤,
具體表現為:安裝沒有前臺介面的外掛就可以正常使用,但是安裝有前臺介面的外掛就開啟報錯!
這個問題一般是由於X2.5模板解析機制不同導致的,凡是在模板中呼叫系統函式或者自定義函式的都會出現此類錯誤,經過與高版本discuz!對比,發現修復方法如下:
開啟檔案 \source\class\class_template.php
找到程式碼
$s = str_replace("\nphp ", "\n", $s);
上傳覆蓋此檔案,然後將 \data\template目錄中的內容清空。
修復完成!
具體表現為:安裝沒有前臺介面的外掛就可以正常使用,但是安裝有前臺介面的外掛就開啟報錯!
這個問題一般是由於X2.5模板解析機制不同導致的,凡是在模板中呼叫系統函式或者自定義函式的都會出現此類錯誤,經過與高版本discuz!對比,發現修復方法如下:
開啟檔案 \source\class\class_template.php
找到程式碼
在程式碼$s = str_replace('<?', "\nEOF;\n", $s);下方加上一行:function stripblock($var, $s) { $s = str_replace('\\"', '"', $s); $s = preg_replace("/<\?=\\\$(.+?)\?>/", "{\$\\1}", $s); preg_match_all("/<\?=(.+?)\?>/e", $s, $constary); $constadd = ''; $constary[1] = array_unique($constary[1]); foreach($constary[1] as $const) { $constadd .= '$__'.$const.' = '.$const.';'; } $s = preg_replace("/<\?=(.+?)\?>/", "{\$__\\1}", $s); $s = str_replace('?>', "\n\$$var .= <<<EOF\n", $s); $s = str_replace('<?', "\nEOF;\n", $s); return "<?\n$constadd\$$var = <<<EOF\n".$s."\nEOF;\n?>"; }
$s = str_replace("\nphp ", "\n", $s);
上傳覆蓋此檔案,然後將 \data\template目錄中的內容清空。
修復完成!