composer create-project 是新建可运行 php 项目的唯一合理起点,必须指定包名和目标目录名,包名须为 packagist 上 type="project" 的模板,版本需用双引号包裹,推荐配置国内镜像并注意 post-create-project-cmd 钩子的定义位置与命名规范。

composer create-project 是新建可运行 PHP 项目的唯一合理起点,不是 composer init,后者只生成空 composer.json,不拉代码、不建目录、不装依赖——执行完 init 就去 require 'vendor/autoload.php',必然报错。
为什么 create-project 报 “Not enough arguments”?
命令必须带包名和目标目录名,缺一不可。这不是环境问题,是语法强制要求。
-
composer create-project laravel/laravel myapp✅ 正确(包名 + 目录名) -
composer create-project❌ 缺全部参数,直接报Not enough arguments (missing: "package") -
composer create-project myapp❌ 把目录名当包名,报Could not find package myapp - 包名必须是 Packagist 上声明了
"type": "project"的模板(如laravel/laravel),不能是laravel/framework这类库包
create-project 拉不到最新代码?版本和稳定性要手动控
默认只取 stable release(如 v10.42.0),不是 main 分支,也不是 dev-master。你以为拉了“最新”,其实可能差了几十个 commit。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 想拉 10.x 最新稳定版:
composer create-project laravel/laravel myapp "10.*"(双引号防 shell 展开*) - 想拉 main 分支:
composer create-project laravel/laravel myapp dev-main --stability=dev - 查可用版本:
composer show laravel/laravel --all - 漏
--stability=dev却指定dev-main,会静默失败或拉错 tag
vendor/ 为空、卡住不动、文件缺失?先盯镜像、缓存、路径
国内直连 packagist.org 极易超时,表现为命令无输出、CPU 占用低、等十分钟没反应——这不是 Composer 坏了,是网络没通。
- 检查是否用了镜像:
composer config -g repo.packagist,应返回阿里云或腾讯云镜像地址 - 临时切镜像:
composer create-project --repository=https://mirrors.aliyun.com/composer/ laravel/laravel myapp -
vendor/为空?大概率安装中途失败但没报错,先清缓存:composer clear-cache - 目标路径含中文、空格、大写字母(如
My Project),Windows 下易触发Could not delete;Linux/macOS 下若权限不足,会卡在解压阶段,报file_put_contents(./composer.json): failed to open stream
post-create-project-cmd 不执行?钩子位置和命名大小写很关键
这个脚本只在**新生成项目自身的 composer.json 根级 scripts 中定义才生效**,不是模板包里写的,也不是 require 进来的依赖里藏的。
- 正确写法:
"scripts": { "post-create-project-cmd": "php ./init.php" }(全小写,带短横线,不能写成PostCreateProjectCmd) - 脚本执行时工作目录是新建项目根目录(如
myapp/),不是模板源码目录,别用../template/src这类相对路径 - 如果脚本里用了
readline()或交互式输入,在 CI 或加了--no-interaction时会阻塞甚至崩溃 - 常见陷阱:改了模板包的
composer.json,却忘了把post-create-project-cmd复制到新项目生成后的composer.json里
project 类型模板、版本号必须用双引号包裹、镜像配置失效时不会报错只会卡死、以及钩子脚本的定义位置根本不在你想象的地方。










