thinkphp5新手第一关是确保环境就绪:必须在项目根目录执行php think run,入口为public/index.php,php≥5.4且启用curl、mbstring扩展;访问http://127.0.0.1:8000见欢迎页才算通过。

别急着写控制器或配数据库,ThinkPHP5 新手第一关根本不是框架本身,而是确认 PHP 环境和入口执行路径是否真正就绪——php think run 跑不起来,后面所有路由、模型、中间件都是白搭。
php think run 报错或访问 404 怎么办
这不是代码写错了,是环境没对齐。最常卡在这一步的新手,90% 都漏了三件事:
- 没进项目根目录就执行
php think run(必须在composer create-project topthink/think myapp生成的目录下运行) -
public/index.php被误删或重命名(ThinkPHP5 入口固定在public/下,不是项目根目录) - PHP 版本低于 5.4(官方最低要求),或没启用
curl、mbstring扩展(php -m | grep curl可查)
验证方式:在项目根目录执行 php think run,终端输出 Server started on http://127.0.0.1:8000 后,浏览器打开 http://127.0.0.1:8000 ——看到 ThinkPHP 欢迎页才算过第一关。
route/app.php 写了路由还是 404
ThinkPHP5 的路由不走 Apache/Nginx 配置,全靠 route/app.php 显式定义。新手常犯两个硬伤:
- 把路由写在
route/route.php或application/route.php(新版默认只加载route/app.php) - 用单斜杠写命名空间,比如
Route::get('user', 'app/controller/User@read')—— 正确写法是双反斜杠:Route::get('user', 'app\controller\User@read') - URL 中含点号(如
/api/v1.2),但没在变量规则里放开:Route::pattern(['id' => '\w+\.?\w+'])
调试命令:php think route:list,终端会列出所有已注册路由。如果没出现你写的那条,说明文件位置或语法有误。
Db::name('user') 查不到数据,但 MySQL 客户端能连上
不是 SQL 写错了,是 .env 配置和表名前缀没对上。ThinkPHP5 默认读取项目根目录下的 .env,而不是 config/database.php(后者只在 .env 缺失时兜底):
-
DB_PREFIX必须显式配置。如果表实际叫tp_user,就得写DB_PREFIX=tp_,否则Db::name('user')会去找user表 -
DB_PORT别依赖默认值。MAMP、XAMPP 常把 MySQL 端口改成8889,不写明就会连不上 - 密码为空也要写成
DB_PWD=,不能留空行或删掉这一行
快速验证连接:php think db:query "SELECT 1",报错信息比控制器里 try-catch 更直接。
控制器返回字符串正常,但 return view() 报错 Class 'think\View' not found
这是 ThinkPHP5.0 和 5.1+ 的关键分水岭。5.0 默认不加载视图类,需手动引入:
- 5.0 版本:在控制器方法开头加
usethink\View;,再用return View::fetch(); - 5.1+ 版本:改用
return view();,且模板文件必须放在application/index/view/(模块名要匹配) - 模板路径错误:
view()默认找application/[模块名]/view/[控制器名]/[方法名].html,别把index.html放错目录层级
最易被忽略的一点:ThinkPHP5 的视图引擎默认不解析 PHP 原生语法(如 <?php echo $name; ?>),只认 {$name} 这类标签——别在模板里混用原生 PHP。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











