3.2.2 - 严重 - 未处理
关闭debug模式后,在Linux服务器上,页面显示页面出错。查看日志发现是大小写的问题。3.2.2和3.2.3都有这一个问题,其他版本未测试。
日志如下:
[ 2016-01-29T17:47:15+08:00 ] 113.64.46.138 /Index/testJSLib
ERR: 模板不存在:./Application/Home/View/Index/testjslib.php
解决办法:看到Thinkphp文档中关于URL的部分 http://document.thinkphp.cn/manual_3_2.html#url ,里面的“URL大小写”写说'URL_CASE_INSENSITIVE' => true, 表示不区分大小写,非调试模式时是不区分的,所以问题应该就出在 它是怎么做到的不区分?因为Linux上的目录名和文件名是区分大小写的。稍微看了一下Thinkphp内部的源码,它的解决方法是代码的相应部分字符串全部转换为小写!这导致了本来里面有大写字母的,本来对应好大小写的反而找不到文件。所以这个忽略大小写,理念是好的,但实现是坑的。如果遇到同样的问题,就在配置文件里加入
'URL_CASE_INSENSITIVE' => false,。然后注意,开启调试模式时,配置会被合并缓存到一个文件中,必须把这个缓存文件删除了新配置才能生效。文件路径是: 项目目录/Application/Runtime/common~runtime.php
