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:如果本文对您有帮助,请点个赞让我知道哦~微笑

posted @ 2018-03-12 09:34  Leytton  阅读(178)  评论(0编辑  收藏  举报