首先说下开启调试模式完整操作。
1、\config\config.inc.php
配置文件中增加两个键值对
'APP_DEBUG' => true, 'SHOW_PAGE_TRACE' => true,
2、把index.php
里面的报错给开启
ini_set('display_errors',true); error_reporting(E_ALL); set_time_limit(0);
3、把\core\core.php
里的$ts['_debug']
改为true
如果没有做第三步操作,你可能需要去频繁的清除缓存。因为我们开发的时候我们是肯定不希望模版是被缓存的,因为变动很大嘛,我之前的解决办法是,在入口执行了一次清除缓存
pclose(popen('php '.__DIR__.'/cleancache.php','r'));
其实呢,这样做之后发现,模版目录_runtime
已经被清空了,但是还是不是自己最新修改的内容。这是因为ThinkSNS的调试除了ThinkPHP自带的调试外,在模版编译这块使用的是自己的调试标识变量($ts['_debug']
)。
看下$ts['_debug']
在下面两处使用到了
# 第一处 \core\core.php //载入核心运行时文件 if(file_exists(CORE_PATH.'/'.CORE_MODE.'Runtime.php') && !$ts['_debug']){ include CORE_PATH.'/'.CORE_MODE.'Runtime.php'; }else{ include CORE_LIB_PATH.'/'.CORE_MODE.'.php'; } # 第二处 \core\OpenSociax\functions.inc.php function fetch(...){ if(!$ts['_debug'] && file_exists($templateCacheFile)) { extract($tvar, EXTR_OVERWRITE); //载入模版缓存文件 include $templateCacheFile; //重新编译 }else{ tshook('tpl_compile',array('templateFile',$templateFile)); // 缓存无效 重新编译 tsload(CORE_LIB_PATH.'/Template.class.php'); tsload(CORE_LIB_PATH.'/TagLib.class.php'); tsload(CORE_LIB_PATH.'/TagLib/TagLibCx.class.php'); $tpl = Template::getInstance(); // 编译并加载模板文件 $tpl->load($templateFile,$tvar,$charset); } }