thinkphp入门关键在于确保php think命令在项目根目录下可执行且public/index.php能正常输出“hello world”;否则后续学习路由、模型均无意义。

ThinkPHP 入门不是从“安装框架”开始的,而是从 php think 命令能不能跑起来、index.php 能不能输出“Hello World”开始的——卡在这两步,后面学再多路由和模型也没用。
为什么 php think 报错 “Could not open input file”
这是新手第一个高频问题:命令行里输入 php think,直接报错,不是权限问题,也不是路径没加,而是当前目录根本不在 ThinkPHP 项目根目录下。
- ThinkPHP 的
think是一个可执行脚本(位于项目根目录),它不是全局命令,必须在项目根目录下运行 - 确认你 cd 进了包含
think文件、app/、public/的那个文件夹,再执行php think - Windows 下如果提示“拒绝访问”,右键编辑
think文件,删掉第一行#!/usr/bin/env php(Linux/macOS 才需要) - 如果仍报错,检查 PHP 是否在 PATH 中:
php -v要能正常输出版本号
为什么访问 public/index.php 显示空白或 500 错误
浏览器打开 http://localhost/your-project/public/index.php 没反应,不是代码写错了,大概率是环境没达标。
- ThinkPHP 6+ 强制要求 PHP >= 7.2,且必须启用
mbstring、openssl、pdo、curl这几个扩展(php -m | grep mbstring可验证) - Apache 需开启
mod_rewrite;Nginx 必须配置重写规则,否则路由全 404 —— 不是框架问题,是 Web 服务器没把请求转发给index.php - 检查
public/目录下的.htaccess(Apache)或nginx.conf里是否漏了try_files $uri $uri/ /index.php?$query_string; - 错误日志在
runtime/log/下,别只盯着浏览器空白页
怎么让 Route::get() 真正生效,而不是一直跳首页
写了路由却进不去对应方法?不是语法错,是没理解 ThinkPHP 的「路由注册时机」和「URL 访问方式」。
- 路由定义必须放在
app/route.php(TP6)或route/route.php(TP8),不能写在控制器里 - 开发时推荐用
php think route:list查看已注册路由,确认你的规则是否出现在列表中 - 默认关闭「强制 HTTPS」和「域名绑定」,但如果你启用了
url_domain_deploy或设置了url_common为 false,就必须用完整 URL 访问,比如/index/hello不能简写成/hello -
Route::get('hello', 'index/hello')中的'index/hello'是「控制器/操作方法」,不是文件路径,对应的是app/controller/Index.php里的hello()方法
为什么 $this->fetch() 报 “Template not found”
控制器里调用 $this->fetch() 却找不到模板,不是路径写错,是 ThinkPHP 默认模板路径和命名规则很严格。
- 默认模板路径是
view/模块名/控制器名/操作名.html,例如Index控制器的hello方法,会找view/index/hello.html(注意小写) - 如果控制器不在
Index模块,比如在api模块,那模板路径就是view/api/user/info.html -
fetch()不支持相对路径写法,不能写$this->fetch('../common/header'),要用完整路径如$this->fetch('common@header')(需开启模板布局) - 模板文件编码必须是 UTF-8 无 BOM,Windows 记事本保存极易带 BOM,导致白屏无报错
真正卡住新手的,从来不是概念多难懂,而是 php think 没在对的目录下跑、public/index.php 没走对服务器配置、模板名大小写和路径层级差了一级——这些细节不手动敲一遍、不翻 runtime/log/ 里的真实报错,光看教程永远在循环重启。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











