1. 程式人生 > >Discuz!教程之Discuz!X2.5版本安裝一些外掛顯示500錯誤,或頁面打不開的問題修復

Discuz!教程之Discuz!X2.5版本安裝一些外掛顯示500錯誤,或頁面打不開的問題修復

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