必须用composer create-project初始化项目,而非require;执行composer create-project topthink/think myapp生成完整骨架,启动前需确保PHP版本达标、.env启用APP_DEBUG、runtime可写、Web服务器根目录指向public/。

如果您打算从零开始搭建一个 ThinkPHP 项目,但尚未初始化 Composer 环境或项目结构,则无法直接运行框架,因为缺失 vendor 目录、自动加载机制及标准目录骨架。以下是完成 ThinkPHP Composer 项目初始化的多种可行流程:
一、使用 create-project 命令创建完整 TP 项目(推荐)
该方式由 ThinkPHP 官方明确指定为首选初始化方法,它会一次性拉取官方骨架、安装全部依赖、执行 post-create-project-cmd 脚本(如生成 runtime/ 目录、复制 .env.example),确保项目开箱即用。
1、确保系统已安装 PHP(TP 8 要求 PHP ≥ 8.1,TP 6 要求 PHP ≥ 7.2)且 Composer 可执行;
2、在空白目录下执行命令:composer create-project topthink/think myapp,其中 myapp 为项目目录名;
立即学习“PHP免费学习笔记(深入)”;
3、如需指定版本,例如安装 TP 8.0 稳定版,运行:composer create-project topthink/think:^8.0 myapp;
4、若安装缓慢或提示 GitHub rate limit,立即切换国内镜像源:composer config -g repo.packagist https://mirrors.aliyun.com/composer/;
5、等待命令执行完毕,确认项目根目录下已生成 app/、config/、public/、runtime/、vendor/ 等标准结构。
二、在已有空目录中手动初始化并引入 ThinkPHP(不推荐但可行)
此方式适用于需将 ThinkPHP 作为核心库嵌入已有工程管理逻辑的特殊场景,但不会生成框架骨架文件(如 public/index.php、app/ 目录等),需开发者自行补全,易遗漏关键组件。
1、进入目标空目录,运行:composer init,按提示填写项目基本信息后生成 composer.json;
2、执行:composer require topthink/framework,仅安装核心框架包;
3、手动创建 public/ 目录,并在其中新建 index.php,内容须包含:require __DIR__.'/../vendor/autoload.php'; (new thinkApp())->run()->send();;
4、手动创建 app/、config/ 等目录,并复制 ThinkPHP 官方仓库中的基础配置与应用结构;
5、在项目根目录下创建 runtime/ 目录,并确保 Web 服务器用户对其具有读写权限。
三、基于已有 PHP 项目整合 ThinkPHP(进阶场景)
当已有成熟 PHP 项目需逐步迁移至 ThinkPHP 架构时,可保留原 composer.json,通过 require 方式引入框架并配置自动加载,但必须显式声明 PSR-4 映射并重写入口逻辑,否则无法启用路由与中间件体系。
1、确认当前项目根目录下存在 composer.json,且已执行过 composer install;
2、执行:composer require topthink/think-installer(用于支持 TP 特定安装脚本);
3、运行:composer require topthink/think,注意该命令仅安装框架元包,不生成骨架;
4、编辑 composer.json,在 autoload 字段中添加:"psr-4": {"app\": "app/", "think\": "vendor/topthink/framework/src/think/"};
5、执行:composer dump-autoload 刷新自动加载映射;
6、在原项目入口文件中引入 vendor/autoload.php,并实例化 thinkApp 启动请求生命周期。
四、验证初始化结果的关键检查项
无论采用哪种初始化方式,均需逐项确认以下状态,任一缺失都将导致框架静默失败或 500 错误。
1、检查 .env 文件是否存在,且包含有效配置:APP_DEBUG=true、LOG_LEVEL=debug;
2、确认 config/app.php 中 'default_timezone' => 'Asia/Shanghai' 已设置,避免时间相关功能异常;
3、验证 runtime/ 目录存在且 Web 服务器进程(如 www-data、nginx、_www)对其拥有写权限;
4、Web 服务器 root 或 document_root 必须指向 public/ 目录,而非项目根目录,否则无法正确加载入口文件;
5、在项目根目录执行:php think run,观察是否成功启动内置服务器并输出访问地址。



















