请问Thinkphp框架是怎么对外隐藏application文件夹的?

自己写了一个框架。使用过程中发现app目录外部可以直接访问到。尝试访问thinkphp的application目录,提示没有权限访问。找了很久不知道什么原理,求各位大佬解答。

阅读 5.8k
8 个回答

生成环境下,application不绑定域名不就完了,就好像TP的public目录才是对外的,除这个文件之外的任何目录都不能通过域名访问。

服务器配置禁止访问目录,所有访问引向单一入口

单一入口,所有请求都是通过index.php访问的 然后把DocumentRoot配置到public下

把你的入口文件单独放置在一个目录

|- app 框架文件
|- web web目录

|- index.php 入口文件

web服务器把document_root设置为web即可。

你可以在Nginx或者Apache中配置路由隐藏起来

说白了,是index.php的作用,这个叫入口文件,里面相对应的有

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用入口文件

// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false

define('APP_DEBUG',1);
// 定义应用目录
define('APP_PATH','./Application/');
define ( 'RUNTIME_PATH', './Runtime/' );

// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了 就是如此简单

尝试访问thinkphp的application目录,提示没有权限访问
你说的这个应该是因为你访问的时候没有加具体的文件或者目录里面没有inde.html或者index.php

没必要隐藏application,因为mvc是通过入口文件,路由解析之后,什么文件先什么文件后,最后得到结果。单独访问控制器文件是得不到任何结果的。

clipboard.png
通过这个文件禁止访问

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题