ThinkPHP5.1根目录下的命令行入口文件think删除导致无法访问
在ThinkPHP5.1下,如果应用部署在根目录而非 public
目录下,根目录的 think
文件是不能删除的,删除后将会导致程序无法正常运行。
部署网站时候出现这个问题后各种地方找了个遍都没有找到原因,花了很久一个个问题仔细排除查看,最后发现是根目录的think文件问题,这个命令行入口文件不能删除。
已经过了有一段时间了,不过觉得还是有必要记录下来,希望后面的人部署网站时碰到这个问题省的再跳一次坑,百度搜索了一下,在官方论坛也有对应的帖子,参考最下方的原文地址。
原因在于 核心代码thinkphp\library\think\Loader.php:68
会判断think文件是否存在,如果不存在,则通过dirname()将目录减少一级,所以,如果index入口文件如果是在public目录下,这样是没有问题的,如果index入口文件是放在项目根目录下,这时候就会有问题了,为了不修改核心代码,可以在根目录下放一个空的think文件即可。
框架内对应代码如下:
1 | // 获取应用根目录 |