ThinkPHP默认模板后缀为.html,可通过配置'TMPL_TEMPLATE_SUFFIX'=>'.php'等灵活修改,需同步清除缓存、确保文件路径一致,并注意安全风险与职责分离。

ThinkPHP 默认模板后缀是 .html,但你可以灵活改成 .php、.tpl 或其他任意后缀,关键在配置项 TMPL_TEMPLATE_SUFFIX。
一、修改模板文件后缀(全局生效)
在项目配置文件中(如 application/config.php 或 conf/config.php,依 ThinkPHP 版本而定),添加或修改以下配置:
'TMPL_TEMPLATE_SUFFIX' => '.php',
✅ 效果:
模板路径 Tpl/Index/index.html 将自动查找 Tpl/Index/index.php;
原来写 {$name} 的语法依然可用,引擎仍按 ThinkTemplate 规则编译执行,只是源文件扩展名变了。
⚠️ 注意:
- 不要改
.php模板里的 PHP 代码逻辑(比如<?php echo $name; ?>),因为 ThinkPHP 模板引擎不直接执行原生 PHP,而是把{}标签编译成 PHP 语句。若你真想混写原生 PHP,请确认已开启TMPL_DENY_PHP为false(默认是true,即禁用):'TMPL_DENY_PHP' => false,
二、配套调整:确保模板能被正确识别和缓存
- 模板文件名必须与配置一致(例如设为
.php,就别留.html文件); - 清除模板缓存:删除
runtime/template/目录下内容,否则旧缓存可能仍指向.html编译结果; - 若使用了模板主题(如
'DEFAULT_THEME'=>'pc'),确保主题目录下对应.php文件存在,路径如:Tpl/pc/Index/index.php。
三、可选:同时改模板解析起始/结束符(避免和 PHP 标签冲突)
如果你的 .php 模板里要写原生 <?php ?>,又保留 {} 标签,建议避开冲突:
立即学习“PHP免费学习笔记(深入)”;
'TMPL_L_DELIM' => '<{', // 左定界符改为 <{
'TMPL_R_DELIM' => '}>', // 右定界符改为 }>这样 就不会和 <?php 混淆,也方便编辑器识别。
四、为什么不推荐直接用 .php 作模板后缀?
- 安全风险:如果 Web 服务器配置不当(如未禁用模板目录的 PHP 解析),
.php模板可能被绕过框架直解,导致变量未过滤、代码泄露; - 职责混淆:模板应专注视图渲染,而非业务逻辑;用
.php易诱发“在模板里写查询、判断、跳转”等反模式; - 团队协作成本高:
.php后缀会让新人误以为这是普通 PHP 脚本,忽略 ThinkTemplate 编译机制。
更稳妥的做法是用 .tpl 或保留 .html,仅在特殊场景(如需 IDE 支持 PHP 语法高亮+ThinkPHP 标签共存)才启用 .php 并配好安全策略。
改完记得测试一个简单页面,确认 assign() 的变量能在新后缀模板中正常输出,且无 404 或编译报错。



















