报错主因是环境、Composer或目录问题而非命令错误:PHP版本低于7.2.5、扩展缺失、镜像超时、目标目录非空、Web根目录未指向public、.env配置错误或runtime不可写。

直接说结论:报错几乎都不是命令本身写错了,而是 PHP 环境、Composer 状态或目录结构没对齐。比如 composer create-project topthink/think 跑出一堆红色错误,大概率不是语法问题,而是你当前用的 PHP 版本太低、扩展没开、镜像源超时,或者目标文件夹不空、权限不对。
PHP 版本和扩展不满足要求
TP6 要求 PHP ≥ 7.2.5(官方文档已明确),但很多人用 Wamp/XAMPP/PhpStudy 切换界面后,php -v 和终端实际执行的 PHP 版本不一致——尤其 Windows 下环境变量没更新。报错常表现为:
Your requirements could not be resolved to an installable set of packages-
ext-pdo is missing或ext-mbstring is missing -
Parse error: syntax error, unexpected ':'(这是 PHP 7.1 以下解析箭头函数失败)
验证方式:php -v 和 php -m | grep -E 'pdo|mbstring|openssl|curl|json' 必须都通过。Wamp 用户请直接进 F:\wamp64\bin\php\php7.4.33\ 这类具体版本目录下执行命令,别只在桌面或 WWW 根目录乱跑。
Composer 镜像失效或缓存损坏
国内直连 packagist.org 极易超时或中断,错误提示常含 Connection timed out、failed to open stream 或 corrupted zip。这不是网络差,是 Composer 默认源不可用。
立即学习“PHP免费学习笔记(深入)”;
- 先换阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 再清缓存:
composer clear-cache - 若仍卡在某个包,加
--prefer-dist强制走压缩包,避免 git clone - 极端情况可临时跳过平台检查:
composer create-project --ignore-platform-reqs "topthink/think:^6.1" myapp(仅调试用,别上生产)
目录不空、权限不对、public 没设对
这个坑最隐蔽:命令看似成功,ls 看到 vendor/ 和 public/index.php 都在,但浏览器一访问就 500 或白屏。常见现象:
-
Class 'think\Container' not found→vendor/autoload.php没加载,通常因 Web 服务器根目录没指向public/ -
require(): Failed opening required 'vendor/autoload.php'→ 项目根目录下真没这个文件,说明composer create-project实际失败了,只是没报错(比如目标文件夹非空,Composer 会静默跳过) - Nginx 报
Primary script unknown→root配置写成了项目根目录,不是public/
操作前务必确认:目标文件夹是空的;安装完立刻进项目根目录运行 php -r "require 'vendor/autoload.php'; echo 'OK';";Web 服务必须把 document root 设为 public/,不是项目根目录。
装完发现 .env 没生效、runtime 不可写
TP6 启动时不报错也不提示缺 .env,而是静默 fallback 到默认配置——结果 APP_DEBUG=false、数据库连不上、路由不生效,你还在查控制器代码。
- 手动复制:
cp .env.example .env,然后填好APP_DEBUG=true和数据库配置 -
.env文件里不能有中文注释、空行、BOM 头,否则Env类解析中断,后续所有变量失效 -
runtime/目录必须可写:chmod -R 755 runtime/(Linux/macOS),Windows 下注意 IIS 或 php-cgi 所用用户是否有写权限 - 如果用
php -S测试,必须先进public/目录再执行:php -S localhost:8000 router.php
真正卡住人的,从来不是「哪条命令能装上」,而是装完之后 public 没配对、.env 写错一行、runtime 权限漏改——这些地方没日志、不报错、只沉默失败。



















