今天遇到了一个比较大而且棘手的问题——更新了smarty的模板之后,页面白屏了,然而在预发布环境下测试的时候,并没有发现这个情况!最后,找到了原因,竟然是与smarty的模板编译原理有关。
编写一个简单的smarty页面,运行之后查看模板的编译目录,找到对应的编译文件。
<?php /*%%SmartyHeaderCode:1631756d543241d8d77-45493985%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed');
$_valid = $_smarty_tpl->decodeProperties(array (
'file_dependency' =>
array (
'177dfb3e2809e44a1ff3a49d04e73219944e3fef' =>
array (
0 => 'tpl\test.htm',
1 => 1458725943, #注意到这个值1458725943为2016/3/23 17:39:03
2 => 'file',
),
.........
'has_nocache_code' => false,
),false); /*/%%SmartyHeaderCode%%*/?>但是,出问题的smarty模板是同一个开发者开发的,而且也能确认新版本的模板文件的修改时间正确,却导致了白屏。后来,也终于查出了原因——由于文件上传过程中,修文件的修改时间为服务器的当前时间,导致了smarty编译了不完整的模板文件,导致了白屏。当模板文件上传完成之后,该文件的修改时间变成真实的修改时间,此时smarty就不会再编译了。
之前上传smarty模板一直没遇到这个问题,但是并发量高的服务器上,问题出现的概率也会提高。
解决方案:
立即学习“PHP免费学习笔记(深入)”;
更新模板文件后,需要清空smarty的编译目录。
以上就介绍了PHP-smarty引起的白屏故障,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号