必须用 composer create-project 初始化 ThinkPHP 6 项目,因其生成含 public/、app/、think 脚本等完整骨架;require 仅装核心包,缺失入口文件和自动加载映射,导致 Class 'think\App' not found 等错误。

composer create-project 是唯一可靠方式,直接 require 框架包基本跑不起来——不是命令写错,是骨架缺失导致入口文件找不到类、php think 或 php artisan 直接报错。
为什么必须用 create-project 而不是 require?
ThinkPHP 6 和 Laravel 都依赖完整项目结构:public/index.php、app/、config/、bin/ 等目录和启动脚本不是靠 vendor/ 自动补全的。composer require topthink/think 只会把源码放进 vendor/topthink/think,但 public/index.php 里写的 require __DIR__.'/../think' 根本不存在——那个 think 文件是 create-project 时从骨架模板复制进来的。
常见报错:Fatal error: Class 'think\App' not found、Could not open input file: think、vendor/bin/artisan 不存在。
中文镜像配置必须满足三个硬条件
执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 后仍无效?大概率踩了以下任意一条:
- 键名写成
repos.packagist或repository——必须是repo.packagist -
composer这个 type 值被省略或写成composer-type——它就是字符串"composer" - URL 末尾没加
/(如写成https://mirrors.aliyun.com/composer)——会静默失效 - Windows 下以非管理员身份运行命令行,导致全局配置写入失败;先运行
composer config -g --list看路径是否可写 - 当前项目已有
composer.json并含"repositories"字段——它会覆盖全局配置,得删掉或注释掉再试
验证是否生效:运行 composer config -g repo.packagist,正确输出应为 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。
安装 Laravel 或 ThinkPHP 的实操命令
配好镜像后,直接用 create-project,别加 --repository 参数(除非临时调试):
立即学习“PHP免费学习笔记(深入)”;
- Laravel 最新稳定版:
composer create-project laravel/laravel myapp - ThinkPHP 6.1(适配 PHP 8.2):
composer create-project topthink/think tp6 --prefer-dist - 指定版本(如 Laravel 10.x):
composer create-project laravel/laravel:^10.0 myapp
注意:
- 目标目录名(如 myapp、tp6)不能含中文、空格、大写字母,否则 Windows 下易触发 Could not delete 错误;
- 加 --prefer-dist 跳过 Git 克隆,下载更快;
- 若卡在 Downloading 或 Installing dependencies,先清缓存:composer clear-cache 再重试。
Docker 和 CI 环境下镜像配置容易丢
很多人在 Dockerfile 里写了 RUN composer config -g repo.packagist ...,但构建阶段用的是 composer:latest 镜像,运行阶段切换到 php:8.2-fpm-alpine 后,这个配置就没了——因为 composer 是独立容器,它的全局配置不会自动同步到 PHP 容器里。
解决办法:在 PHP 容器的启动脚本或 ENTRYPOINT 中重新执行配置命令,或者把镜像 URL 写进项目级 composer.json 的 repositories 字段(但需确保该字段未被其他配置覆盖)。
国内网络环境下,镜像配置不是“锦上添花”,而是刚性前提;而 create-project 不是可选项,是框架能跑起来的最小必要操作。漏掉任一环,都会表现为“命令没报错,但 vendor 为空”或“页面白屏+500”。



















