答案是:先验证php think version为8.1.0+并访问欢迎页,再用php think make:controller api/user生成控制器、php think make:model common/user生成模型,修改database.php配置数据库,最后用guzzlehttp抓取页面。

想在30分钟内用ThinkPHP 8.1跑通第一个接口、生成控制器、连上数据库并返回JSON数据,而不是花半天查文档翻源码——你需要的不是整本手册,而是手册里真正能动手的部分。
快速验证安装与运行环境
打开终端,进入项目根目录,执行:php think version。输出必须为【8.1.0】或更高版本;8.1.0-rc2、8.1.0-beta均不满足后续操作前提。
运行php think run启动内置服务器,浏览器访问http://localhost:8000。看到“ThinkPHP V8.1”欢迎页即表示基础环境就绪。
若报错“Command 'run' not found”,说明think-swoole或其他扩展干扰了命令注册,立即执行composer remove topthink/think-swoole再试——该扩展会覆盖默认命令,新手阶段完全不需要。
5分钟生成可用控制器与模型
方法一:带REST方法的控制器(适合API开发)
执行php think make:controller api/User,将在app/controller/api/User.php生成含index/read/save/update/delete五种方法的完整骨架,命名空间和父类引用全部自动补全。
方法二:空控制器(适合自定义逻辑)
加--plain参数:php think make:controller admin/Dashboard --plain,只生成基础类结构,不预置任何方法。
生成模型并绑定表:php think make:model common/User。生成文件中protected $table = 'user'已写死,【若实际表名是user_info,必须手动改为'user_info',否则所有查询返回空数组】。
配置数据库并测试连接
第一步:编辑app/config/database.php,修改'hostname'为'127.0.0.1'(不要用localhost,MySQL 8.0+默认禁用本地socket解析)。
第二步:填入'database'、'username'、'password',确保数据库已存在且用户有权限。
第三步:在控制器中写测试代码:$data = \think\facade\Db::table('user')->limit(1)->select();
返回非空数组即表示连通成功。若报错“SQLSTATE[HY000] [1045] Access denied”,检查密码是否含特殊字符$、@等,需用单引号包裹。
抓取页面内容(绕过国内网络障碍)
第一步:确认已启用安全模式——编辑config/app.php,将'security_mode' => false改为true;不改会导致file_get_contents被拦截,curl也无法发起请求。
第二步:清空缓存:rm -rf runtime/cache/(Linux/macOS)或手动删除runtime/cache文件夹;旧缓存会让security_mode设置失效。
第三步:安装GuzzleHTTP:composer require guzzlehttp/guzzle:7.8.1。指定7.8.1版本是关键——它修复了2026年曝出的DNS劫持漏洞,低版本在国内网络下极易超时或返回空响应。
第四步:在控制器中调用:
$client = new \GuzzleHttp\Client(['timeout'=>15,'verify'=>false,'headers'=>['User-Agent'=>'Mozilla/5.0 (Windows NT 10.0; Win64; x64)']]);<br>$res = $client->get('https://www.gov.cn/');<br>$html = (string)$res->getBody();
【'verify'=>false不可省略】——国内政务站SSL证书多由地方CA签发,PHP默认不信任,设为false才能完成TLS握手。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











