問題描述:網站在windows上編寫完畢後一切正常,當把程序上傳到服務器中後出現找不到模板到問題。
經過層層查找發現是phpcms/lib/classes/template_cache.class.php中函數template_compile出現異常。
我有如下模板文件:phpcms/templates/default/member/sy/index.html,但經過模板解析函數template_compile處理後卻跑到phpcms/plugin/目錄下去找模板,這肯定是找不到到。於是修改這個模板解析函數。
原來的條件判斷第三部分代碼如下:
$plugin = str_replace('plugin/', '', $module);
$module = str_replace('/', DIRECTORY_SEPARATOR, $module);
$tplfile = $_tpl = PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$template.'.html';
修改爲:
$modules=explode('/',$module);
$tplfile = $_tpl = PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$modules[0].DIRECTORY_SEPARATOR.$modules[1].DIRECTORY_SEPARATOR.$template.'.html';
此時就解決了。
至於爲什麼windows下原來的模板解析沒問題,而一到linux服務器就出問題,我也不知道爲什麼。