TP模板因路径大小写获取不到的Bug

浏览:3086 发布日期:2015/05/02 分类:技术分享 关键字: URL_CASE_INSENSITIVE 大小写 is_file
国外的框架之所以强大,很重要的一个因素是社区的活跃度。提了个问题好几天,没人回答,呵呵!!

在2年前我提过一次建议,没想到今天碰巧见证了我的建议可行性!详情见:http://www.thinkphp.cn/topic/29544.html

这次的问题场景是这样,两台服务器(CentOS)除了php版本不一致,Nginx版本和配置一致。

TP的url关闭了大小写区分 URL_CASE_INSENSITIVE = true
AttachController.class.php下有个uploadView的方法:public function uploadView()
    {
        $this->display();
    }
注意View驼峰大写。按照逻辑,应该是获取模板目录中的uploadView.html。

但在PHP 5.5.20和PHP5.5.22以上版本的区别如下:





我不清楚是不是php的bug,google了php相关changelog也没发现什么信息点,发现5.5.20的is_file()函数路径是不区分大小写的,我的VM中php和mac自带php也都是5.5.20,所以不管模版命名大小写怎样,都能获取到,

但是5.5.22以上版本,包括另一台服务器版本是5.5.24,is_file()却区分大小写,所以在本地开发预览时没问题,传到服务器上时就出问题了。

这种问题不该归责到php的bug,URL_CASE_INSENSITIVE参数只是控制url区分大小写,如果把模板加载的逻辑也由这个参数控制,那这真是个糟糕的设计,最后我还是不得不参考自己提出的建议:http://www.thinkphp.cn/topic/2020.html
最佳答案
评论( 相关
后面还有条评论,点击查看>>