日期:2014-05-17  浏览次数:20380 次

thinkphp的一个小BUG
前两天发现自己网站莫名其妙的多了一下文件
原文地址:http://bbs.csdn.net/topics/390469279

今早观察了一下这些莫名其妙的HTML文件,终于找到问题所在!!!
原因:
如果开启静态缓存,在静态规则中带有参数,例如
//静态缓存
'HTML_CACHE_ON'=>true,
'HTML_CACHE_RULES'=> array(
'infor:search' => array('home/{:module}/{:action}/{key}'),
),


举例说明
{key}=test
Html/home/Infor/search/test.html
{key}=../boot
Html/home/Infor/boot.html
是的第二个静态文件HTML飞到了上级目录,所以服务器目录多了很多文件和文件夹。
这个应该算是thinkphp的一个小BUG,虽然不会对网站照成危害但是很烦人

解决的方法也很简单
就是静态规则不要直接用参数,推荐大家用MD5处理{$_SERVER.REQUEST_URI|md5}

机智的屌丝

------解决方案--------------------
过来看看,静态缓存用的比较少。
------解决方案--------------------
这不是 thinkphp 的 bug
很自然的你要为你自己的行为负责

对于你示例的规则,若 key = ../boot
由 $rule  = preg_replace('/{(\w+)}/e',"\$_GET['\\1']",$rule);
可知,被解释成 home/MODULE_NAME/ACTION_NAME/../boot

TP 有什么理由要阻止你把静态文件放在上级目录中?