前段时间游戏出现过离奇的问题,为了更好地管理运维对系统加强了监控,并且系统对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