跑通thinkphp仓库管理系统需绕开三大陷阱:伪静态未配致路由404、database.php配置后因缓存不生效、admin模块未注册及中间件缺失导致登录后跳空白页。

直接跑通 ThinkPHP 仓库管理系统,关键不是“学完框架”,而是绕开三个默认陷阱:伪静态没配好导致路由 404、database.php 配置后不生效、以及登录成功却跳转到空白 /admin/index 页面——那是因为你还没建 admin 模块或没配中间件拦截。
伪静态规则必须匹配 public 目录入口
ThinkPHP 6+ 强制要求 Web 服务器根目录指向 /public,但很多人仍把整个项目丢进 Apache 的 htdocs 或 Nginx 的 root 下。结果是 index.php 找不到,所有 URL 都 404。
- Apache 用户:确保
.htaccess在/public目录下,内容为:RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] - Nginx 用户:在 server 块中把
root明确设为/path/to/your/project/public,不要用alias;然后删掉 location 块里所有重写逻辑,ThinkPHP 自带的public/index.php已能正确解析 PATH_INFO - 验证方式:访问
http://localhost/index.php?s=/admin/login,如果出现登录页,说明入口通了;再试http://localhost/admin/login,能打开才代表伪静态生效
database.php 修改后要清空 runtime/cache
ThinkPHP 会缓存配置,改完 config/database.php 不清缓存,等于没改。常见现象是连错库、报 SQLSTATE[HY000] [1045] Access denied 却确认账号密码没错。
- 缓存路径固定在
runtime/cache/和runtime/config/,直接rm -rf runtime/cache/* runtime/config/* - 别只改
app/database.php(那是 TP5.1 旧路径),TP6+ 配置统一在config/database.php - 如果用 MySQL 8+,注意
'hostname' => '127.0.0.1'不能写成'localhost',否则可能因 socket 连接失败;同时确认用户权限已授权给%'@'%'%而非仅'root'@'localhost'
admin 模块必须手动注册路由且启用中间件
ThinkPHP 默认只有 index 模块,/admin/login 这类地址不会自动识别——它不是“子目录”,而是独立模块路由。没注册就访问,会进 IndexController 或直接抛出 Module not exists:admin 错误。
- 在
route/app.php中显式定义 admin 路由:use think\facade\Route; Route::domain('admin', function () { Route::rule('login', 'admin/login/index'); Route::rule('index', 'admin/index/index')->middleware('checkLogin'); }); -
checkLogin中间件必须存在,且在app/middleware.php中注册;它不能只靠 session 判断,要检查session('admin_user')是否存在并有效,否则登录后跳转/admin/index时被放行到空页面 - 控制器命名空间必须严格为
app\admin\controller\Login,类名首字母大写,方法名小写;模板路径对应为view/admin/login/index.html,少一级目录就 404
最常卡住的地方不在代码写法,而在目录结构和缓存状态——public 入口、runtime 清理、route/app.php 注册,这三步漏任何一步,系统都起不来。别急着写业务逻辑,先让 /admin/login 稳定返回一个表单。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











