最常见、最直接原因是web服务器根目录未设为public目录;thinkphp6强制入口在public/index.php,且需屏蔽app/等敏感目录,若根目录指向项目顶层则请求无法进入框架导致404。

ThinkPHP 6+ 安装后访问出现 404,最常见、最直接的原因就是 Web 服务器的根目录没设对——它必须指向项目内的 public 目录,而不是整个项目的根目录(如 thinkphp_6.1.0_full)。
✅ 正确的文档根目录:public/
ThinkPHP 6 强制要求将 Web 服务器的「网站根目录」设置为 public 文件夹。
这是因为:
- 入口文件
index.php只放在public/下; - 敏感目录(如
app/、config/、runtime/)必须被 Web 服务器屏蔽,不能被直接访问; -
public/外的路径若被设为根目录,会导致框架初始化失败或安全风险。
验证方式:
在浏览器中访问:
→ http://localhost/mytp/public/(能看到欢迎页 ✔)
→ http://localhost/mytp/(404 或报错 ❌)
→ http://localhost/mytp/index.php(404,因为 index.php 不在该路径下 ❌)
? 常见环境配置方法
XAMPP / phpStudy / 手动 Apache
- 把解压后的项目文件夹(如
mytp)放到htdocs/下; -
不要用
http://localhost/mytp/访问; - 改用
http://localhost/mytp/public/; - 更规范的做法:在虚拟主机配置中,把
DocumentRoot直接指向mytp/public,并配好<directory></directory>和AllowOverride All。
Nginx(含宝塔)
- 进网站设置 → 「网站目录」→ 「运行目录」选
/public(注意开头有斜杠); - 保存后务必点击「重载 Nginx」;
- 若部署在子目录(如
/myapp/),则运行目录填/myapp/public,且伪静态规则要同步适配。
Laragon(推荐新手)
- 右键菜单 → “Quick Create” → 选 ThinkPHP;
- 它会自动把
public设为根目录,并生成正确配置; - 访问
http://mytp.test/即可直达欢迎页。
⚠️ 错误做法(导致 404 的高频原因)
- 把整个项目压缩包直接扔进
htdocs,却不解压或不解压后没改根目录; - 解压后用
http://localhost/thinkphp_6.1.0_full/访问(漏掉/public/); - 宝塔建站时没改「运行目录」,仍用默认的
/(即项目根目录); - Nginx 配置里
root指向了/www/wwwroot/myapp,而不是/www/wwwroot/myapp/public。
? 快速自检三步法
-
看路径:浏览器地址栏是否含
/public/?没有就补上试试; -
看文件:确认
public/index.php存在,且首行是define('APP_PATH', __DIR__ . '/../app/');; -
看响应头:用浏览器开发者工具 → Network → 刷新首页,查看响应头是否有
X-Powered-By: ThinkPHP;没有,说明请求根本没进框架。
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











