在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
最佳答案