ThinkPHP include失效所发现的大小写敏感系列惨案
0x01 问题描述
TP框架写的网站移植到Linux下后,发现首页代码显示不全、部分URL失效。
0x02 include失效
经过排查后马上锁定应该是这行代码执行失效
<include file="home@public:head" />
在Windows系统测试没问题的,但部署到Linux系统中就失效了。仔细观察,View层中目录首字母为大写,此处函数底层会寻找目录,Linux对大小写敏感的,改成
<include file="Home@Public:head" />
问题解决。
不过光是这条语句,很多地方就有用到,慢慢改吧◑﹏◐,还有各个地方的URL路径也得检查一遍,是否因为大小写导致失效。
0x03 URL失效
比如说Index控制器中的:
public function myTest() {
$this -> display();
}
如果/View/Index目录下只有mytest.html而不是MyTest.html那么在Linux中就会找不到模板,Windows中是有效的。
还有指定视图文件的写法:
public function myTest() {
$this -> display("Index:hello");
}
如果写成下面这样也会失效:
public function myTest() {
$this -> display("index:hello");
}
…等等,只要涉及文件路径查找的,都要注意大小写敏感
。
0x04 深刻总结
在开发过程中,一定要注意开发规范,注意大小写敏感,即使是在Windows开发环境中也是如此,毕竟是要部署到Linux生产环境中去的。
神父,我有罪,辜负了党和人民对我的期望,下面是检讨:
《卧春》
暗梅幽闻花,
卧枝伤恨底。
遥闻卧似水,
易透达春绿。
岸似绿,
岸似透绿,
岸似透黛绿。
【转载请注明出处: http://blog.csdn.net/leytton/article/details/79518760】
PS:如果本文对您有帮助,请点个赞让我知道哦~微笑