关于smarty中templates_c中的文件生成和命名

文章详细阐述了游戏系统中出现的离奇问题,通过加强监控,对chown,chmod,mkdir,rm,mv,rename等命令进行了屏蔽,导致PHP的smarty编译型特性无法正常工作,从而引发系统显示为白屏的问题。重点解释了Smarty的工作原理及其编译过程中的临时文件处理,以及如何解决此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间游戏出现过离奇的问题,为了更好地管理运维对系统加强了监控,并且系统对chown,chmod,mkdir,rm,mv,rename等命令进行了屏蔽。而PHP的smarty特点就是编译型,即在运行程序时会编译一个非模版技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)。而smarty生成该文件前会先生成一个临时文件名,之后在编译为一定规律的文件名,所以禁止rename就相当禁止了其生成模版文件,导致include不到%***%***.php,最终导致系统显示为白屏。

PS:程序执行完后我们可以打开当前目录下的templates_c与cache目录,就会发现在下边多出一些%%的文件,这些目录就是Smarty的编译与缓存文件,它由程序自动生成,不要直接对这些生成的文件进行修改。


主要错误提示:

[16-Nov-2012 17:08:15] PHP Warning:  include() [<a href='function.include'>function.include</a>]: 

[16-Nov-2012 17:08:15] PHP Warning:  include(/data/web/S1/php/view/Templates_c//%%87^876^8763530B%%login.shtml.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in /data/web/S1/php/lib/Template/Smarty.php on line 1255

[16-Nov-2012 17:08:15] PHP Warning:  include() [<a href='function.include'>function.include</a>]: Failed opening '/data/web/S1/php/view/Templates_c//%%87^876^8763530B%%login.shtml.php' for inclusion (include_path=':/data/web/S1/php/module:/data/web/S1/php/lib:/data/web/S1/php/lib/Ext:/data/web/S1/php/service:.:/usr/local/php/lib/php') in /data/web/S1/php/lib/Template/Smarty.php on line 1255



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值