thinkphp 6+ 安装报错主因是 php 环境不满足:需 php 7.2+ 及 ext-json、mbstring、xml、curl 等扩展;composer 源应切为国内镜像如 https://mirrors.aliyun.com/composer/;入口必须为 public/index.php 并确保自动加载正常。

Composer install 报错 require 不满足或 ext-xxx 缺失
ThinkPHP 6+ 强制依赖 PHP 7.2+ 和若干扩展,常见报错如 ext-json、ext-opcache、ext-mbstring 未启用。不是 Composer 本身坏了,而是 PHP 环境没配齐。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 运行
php -m检查已加载扩展,确认json、mbstring、xml、curl都在列表里 - Windows 用户注意:WAMP/XAMPP 的 CLI(命令行)PHP 和 Web PHP 可能是两个配置,用
php --ini看 CLI 加载的php.ini路径,手动开启对应extension=行 - Linux/macOS 若用
apt或brew安装 PHP,需额外安装扩展包,例如 Ubuntu 上要sudo apt install php-mbstring php-xml php-curl
composer create-project topthink/think 卡住或超时
这是国内直连 Packagist.org 的典型表现,不是网络断了,是连接慢 + 镜像没切对。Composer 默认源在国外,下载 vendor 包时容易卡在 Downloading https://packagist.org/... 或反复重试。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 先执行
composer config -g repo.packagist composer https://packagist.phpcomposer.com(旧镜像已停)→ 改用https://packagist.laravel-china.org或更稳的https://mirrors.aliyun.com/composer/ - 验证是否生效:运行
composer config -g repo.packagist,输出应为对象含"url": "https://mirrors.aliyun.com/composer/" - 如果之前失败过,删掉残留的
vendor/和composer.lock再重试,避免 Composer 复用损坏的缓存
安装完访问报 Class 'think\App' not found
这不是没装成功,而是入口文件没找对或自动加载失效。ThinkPHP 6+ 的 public/index.php 是唯一合法入口,直接访问项目根目录或错放 index.php 会导致类找不到。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 确认 Web 服务器(Nginx/Apache)的
root指向的是your-project/public,不是your-project - 检查
public/index.php开头是否包含require __DIR__.'/../vendor/autoload.php';—— ThinkPHP 官方脚手架默认有,但若手动挪动过文件可能被删 - 运行
composer dump-autoload强制重建自动加载映射,尤其在改过composer.json或手动增删类后
PHP 版本符合但 composer create-project 仍拒绝安装
ThinkPHP 官方包在 composer.json 中声明了严格的 php 版本约束(如 "^7.3 || ^8.0"),而你本地 php -v 显示的版本号可能带补丁信息(如 8.1.23),但实际 composer.json 里写的是 ^8.1,看似匹配却因 minor 版本策略误判。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 运行
composer show topthink/think查看该包支持的 PHP 范围,再比对php -v输出;注意^8.1允许8.1.0到8.2.0前,不包括8.3+ - 临时绕过检查(仅调试用):
composer create-project topthink/think --ignore-platform-reqs,但别上线用 - 更稳妥的做法是用
phpbrew或asdf切到明确支持的版本,比如 TP6.1 最低要求 PHP 7.2.5,TP6.3 推荐 PHP 8.0+
环境兼容性永远比报错信息更隐蔽——PHP 小版本、扩展编译参数、甚至 SELinux 或 Windows 权限都可能让 autoload.php 读不到类文件,遇到问题先盯死 php -v、php --ini、php -m 这三行输出。











