public目录是ThinkPHP项目的唯一Web可访问入口,所有HTTP请求经index.php统一处理;它承担启动框架、路由解析、请求分发职责,同时隔离敏感文件、托管静态资源,并支撑路径常量与资源引用。

public目录是ThinkPHP项目的唯一Web可访问入口,所有HTTP请求都必须经过它里面的index.php统一处理。这不是可选项,而是框架运行的硬性前提。
承担统一入口职责
ThinkPHP 6+采用前端控制器模式,public/index.php是整个应用的启动点。它负责加载自动加载器、初始化框架、解析路由、分发请求到对应控制器。没有它,框架根本无法启动——你会看到Class 'think\App' not found或空白页。
隔离敏感文件,保障安全
项目根目录下有app/、config/、route/、.env等目录,它们含源码、配置和密钥,绝不能被浏览器直接访问。把Web服务器的document_root设为public/,就天然屏蔽了这些路径。如果错误指向项目根目录,用户访问https://example.com/config/database.php就能直接下载数据库密码。
托管静态资源与基础文件
所有前端能直接请求的文件都放在这里:
立即学习“PHP免费学习笔记(深入)”;
- CSS、JS、图片等放在
public/static/或其子目录(如public/static/css/app.css) - 网站图标
favicon.ico必须在public/根下 -
.htaccess(Apache)或Nginx的location规则也在此,用于拦截对.env、runtime/等的非法访问
支撑路径常量与资源引用
框架内部依赖public/的位置推导关键路径:
-
__ROOT__常量默认指向/(即public的URL根),用于生成静态资源链接 -
ROOT_PATH由public/index.php向上一级定位,影响runtime/写入、日志保存、上传路径等 - 若public位置错,
vendor/autoload.php可能加载失败,导致类找不到



















