报错90%因入口路径错误或PHP环境不匹配:非全局Composer会报“Command 'create-project' is not defined”,需用which/where确认路径;依赖解析失败多因PHP版本与模板不兼容;下载卡住须切阿里云镜像并清缓存;创建后Class not found需检查vendor/autoload.php是否存在并执行dump-autoload。

直接运行 composer create-project 报错,90% 是因为没走对入口路径或 PHP 环境不匹配,不是镜像或网络问题。
报错 “Command 'create-project' is not defined”
这不是 Composer 本身坏了,而是你当前用的不是全局安装的 Composer,而是项目里某个旧版本或局部 bin 下的可执行文件(比如 Laravel Installer 自带的轻量版 composer)。它只支持 install/update,根本不认识 create-project。
- 运行
which composer(Linux/macOS)或where composer(Windows)确认调用的是哪个可执行文件 - 如果路径含
vendor/bin/composer或laravel/installer,说明你误进了某个已有项目的目录,先cd到空目录再试 - 确保用的是全局 Composer:运行
composer --version,输出应含Composer version 2.x,且没有“Laravel Installer”字样
报错 “Your requirements could not be resolved” 后跟一堆包名
这是依赖解析失败,常见于指定模板时用了不兼容的 PHP 版本或已废弃的包名。例如 composer create-project laravel/laravel myapp 在 PHP 8.4 下会卡住,因为 Laravel 10 还没正式支持。
- 先确认本地 PHP CLI 版本:
php -v,再查目标框架的官方要求(如 Laravel 10 要求 PHP ^8.1,CodeIgniter 4 要求 ^8.1|^8.2) - 不要硬写分支名如
dev-main或11.x-dev,除非你明确知道它稳定;优先用稳定标签:composer create-project laravel/laravel myapp "10.48.*" - 如果真要试开发版,加
--ignore-platform-reqs绕过检查,但仅限本地验证,别提交到 CI
报错 “file could not be downloaded” 卡在 “Downloading …”
国内直连 Packagist.org 几乎必挂,但错误常被误判为权限或证书问题。关键看报错是否含 curl、SSL、Connection refused 或超时字样。
- 立刻切阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 切完必须清缓存:
composer clear-cache,否则 Composer 会复用之前失败的元数据记录 - 如果仍失败,临时关 TLS 验证(仅调试):
composer config -g secure-http false,成功后再开回来
创建后 php artisan serve 报 Class not found
这说明 create-project 表面成功了,但自动加载没生效——最常见原因是 vendor/autoload.php 没生成,或 composer dump-autoload 没跑。
- 进项目根目录,手动检查是否存在
vendor/autoload.php;不存在就说明create-project中途失败但没报错(尤其 Windows 下 PATH 过长时静默中断) - 存在但类找不到,立即运行
composer dump-autoload -o强制重生成优化 autoload 映射 - 某些框架(如 CodeIgniter 4)禁止解压 ZIP +
composer install流程,必须用create-project,否则vendor/autoload.php不绑定框架核心命名空间
最容易被忽略的一点:create-project 成功不代表项目能跑。它只负责拉代码、装依赖、生成 vendor 和基础配置,后续的 artisan、spark、serve 命令能否执行,取决于 autoload 是否完整、PHP 扩展是否启用、以及框架自身的初始化逻辑是否触发——别急着改配置,先看 vendor/autoload.php 存不存在、composer dump-autoload -v 输出有没有 warning。


















